-
Notifications
You must be signed in to change notification settings - Fork 86
Open
Description
原题链接:783. 二叉搜索树节点最小距离
解题思路:
- 由于二叉搜索树是有序的,任意两个节点之差的最小值,即为相邻节点的值之差的最小值。
- 使用中序遍历二叉搜索树,即可从左到右按顺序读取每个值,再计算与上一个节点值的之差,同时取最小值即可。
/**
* @param {TreeNode} root
* @return {number}
*/
var minDiffInBST = function (root) {
let min = Infinity // 记录最小值,初始值为Infinity,避免对比时出错
let prev = null // 缓存上一个节点的值
// 中序遍历二叉搜索树
function traversal(node) {
// 节点为空则停止递归
if (!node) {
return
}
// 向左子树递归
traversal(node.left)
// 中序遍历在左右子树的递归中间处理即可
// 如果prev有值,则每次比较相邻节点之差
if (prev !== null) {
// 并与之前已缓存的最小值对比,min始终缓存最小值
min = Math.min(min, node.val - prev)
}
// 将当前节点的值缓存为prev,用于下一次比较
prev = node.val
// 向右子树递归
traversal(node.right)
}
traversal(root)
return min
}
Metadata
Metadata
Assignees
Labels
No labels