添加 0530.二叉搜索树的最小绝对差.md Scala版本

This commit is contained in:
ZongqinWang
2022-05-28 13:55:52 +08:00
parent 0e3a1bc3dc
commit 6f46d91676

View File

@ -431,7 +431,84 @@ function getMinimumDifference(root: TreeNode | null): number {
};
```
## Scala
构建二叉树的有序数组:
```scala
object Solution {
import scala.collection.mutable
def getMinimumDifference(root: TreeNode): Int = {
val arr = mutable.ArrayBuffer[Int]()
def traversal(node: TreeNode): Unit = {
if (node == null) return
traversal(node.left)
arr.append(node.value)
traversal(node.right)
}
traversal(root)
// 在有序数组上求最小差值
var result = Int.MaxValue
for (i <- 1 until arr.size) {
result = math.min(result, arr(i) - arr(i - 1))
}
result // 返回最小差值
}
}
```
递归记录前一个节点:
```scala
object Solution {
def getMinimumDifference(root: TreeNode): Int = {
var result = Int.MaxValue // 初始化为最大值
var pre: TreeNode = null // 记录前一个节点
def traversal(cur: TreeNode): Unit = {
if (cur == null) return
traversal(cur.left)
if (pre != null) {
// 对比result与节点之间的差值
result = math.min(result, cur.value - pre.value)
}
pre = cur
traversal(cur.right)
}
traversal(root)
result // return关键字可以省略
}
}
```
迭代解决:
```scala
object Solution {
import scala.collection.mutable
def getMinimumDifference(root: TreeNode): Int = {
var result = Int.MaxValue // 初始化为最大值
var pre: TreeNode = null // 记录前一个节点
var cur = root
var stack = mutable.Stack[TreeNode]()
while (cur != null || !stack.isEmpty) {
if (cur != null) {
stack.push(cur)
cur = cur.left
} else {
cur = stack.pop()
if (pre != null) {
result = math.min(result, cur.value - pre.value)
}
pre = cur
cur = cur.right
}
}
result // return关键字可以省略
}
}
```
-----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>