二叉搜索树节点最小距离
Tips
题目
给你一个二叉搜索树的根节点 root
,返回树中任意两不同节点值之间的最小差值.
差值是一个正数, 其数值等于两值之差的绝对值.
提示:
- 树中节点的数目范围是
[2, 200]
0 <= Node.val <= 10⁵
示例
4
/ \
2 6
/ \
1 3
输入: root = [4,2,6,1,3]
输出: 1
1
/ \
0 48
/ \
12 49
输入: root = [1,0,48,null,null,12,49]
输出: 1
题解
看到 BST 必想到中序遍历, 先声明一个变量 preVal
默认是 null
, 代表上一个节点的值. 然后中序遍历, 找当前节点的 val
和 preVal
差的绝对值, 跟 min
比较即可.
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var minDiffInBST = function (root) {
let min = Number.MAX_SAFE_INTEGER
let preVal = null
var inorder = function (node) {
if (!node) return
inorder(node.left)
if (preVal !== null) {
min = Math.min(min, Math.abs(preVal - node.val))
}
preVal = node.val
inorder(node.right)
}
inorder(root)
return min
}