mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Merge pull request #1412 from wzqwtt/tree13
添加(0700.二叉搜索树中的搜索、0098.验证二叉搜索树) Scala版本
This commit is contained in:
@ -589,7 +589,50 @@ function isValidBST(root: TreeNode | null): boolean {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Scala
|
||||||
|
|
||||||
|
辅助数组解决:
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
import scala.collection.mutable
|
||||||
|
def isValidBST(root: TreeNode): Boolean = {
|
||||||
|
var arr = new mutable.ArrayBuffer[Int]()
|
||||||
|
// 递归中序遍历二叉树,将节点添加到arr
|
||||||
|
def traversal(node: TreeNode): Unit = {
|
||||||
|
if (node == null) return
|
||||||
|
traversal(node.left)
|
||||||
|
arr.append(node.value)
|
||||||
|
traversal(node.right)
|
||||||
|
}
|
||||||
|
traversal(root)
|
||||||
|
// 这个数组如果是升序就代表是二叉搜索树
|
||||||
|
for (i <- 1 until arr.size) {
|
||||||
|
if (arr(i) <= arr(i - 1)) return false
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
递归中解决:
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
def isValidBST(root: TreeNode): Boolean = {
|
||||||
|
var flag = true
|
||||||
|
var preValue:Long = Long.MinValue // 这里要使用Long类型
|
||||||
|
|
||||||
|
def traversal(node: TreeNode): Unit = {
|
||||||
|
if (node == null || flag == false) return
|
||||||
|
traversal(node.left)
|
||||||
|
if (node.value > preValue) preValue = node.value
|
||||||
|
else flag = false
|
||||||
|
traversal(node.right)
|
||||||
|
}
|
||||||
|
traversal(root)
|
||||||
|
flag
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
@ -363,7 +363,34 @@ function searchBST(root: TreeNode | null, val: number): TreeNode | null {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Scala
|
||||||
|
|
||||||
|
递归:
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
def searchBST(root: TreeNode, value: Int): TreeNode = {
|
||||||
|
if (root == null || value == root.value) return root
|
||||||
|
// 相当于三元表达式,在Scala中if...else有返回值
|
||||||
|
if (value < root.value) searchBST(root.left, value) else searchBST(root.right, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
迭代:
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
def searchBST(root: TreeNode, value: Int): TreeNode = {
|
||||||
|
// 因为root是不可变量,所以需要赋值给一个可变量
|
||||||
|
var node = root
|
||||||
|
while (node != null) {
|
||||||
|
if (value < node.value) node = node.left
|
||||||
|
else if (value > node.value) node = node.right
|
||||||
|
else return node
|
||||||
|
}
|
||||||
|
null // 没有返回就返回空
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
Reference in New Issue
Block a user