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>
|
<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