mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-12 21:50:49 +08:00
添加 0530.二叉搜索树的最小绝对差.md Scala版本
This commit is contained in:
@ -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>
|
||||
|
Reference in New Issue
Block a user