530 二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
題解
中序遍历完一遍,然后中序遍历每两个值差的最小值。
javascript
var getMinimumDifference = function(root) {
var min = Number.MAX_SAFE_INTEGER
var prev = null
var middleOrder = function(root) {
if(!root) {
return
}
middleOrder(root.left)
if(prev) {
const diff = root.val - prev.val
min = Math.min(min, diff)
}
prev = root
middleOrder(root.right)
}
middleOrder(root)
//console.log(min)
return min
};
非递归
javascript
var getMinimumDifference = function(root) {
const stack = []
let result = Number.MAX_SAFE_INTEGER
let prev = null
stack.push(root)
while(stack.length) {
const current = stack.pop()
if(current) {
//处理中序
if(current.right) {
stack.push(current.right)
}
//重新塞入中值
stack.push(current)
stack.push(null)
if(current.left) {
stack.push(current.left)
}
} else {
const current = stack.pop()
if(prev) {
const diff = current.val - prev.val
result = Math.min(diff, result)
}
prev = current
}
}
return result
};