「每日LeetCode」2022年9月16日

本文最后更新于:2023年3月19日 晚上

783.二叉搜索树节点最小距离

783.二叉搜索树节点最小距离

Category Difficulty Likes Dislikes
algorithms Easy (59.94%) 234 -

Tags
Companies
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值
差值是一个正数,其数值等于两值之差的绝对值。


示例 1:
输入:root = [4,2,6,1,3] 输出:1

示例 2:
输入:root = [1,0,48,null,null,12,49] 输出:1

提示:

  • 树中节点的数目范围是 [2, 100]
  • 0 <= Node.val <= 105

注意:本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同


Discussion | Solution
Code Now

思路

返回任意两节点最小,只需要中序遍历得到递增数组,然后逐个比较差值即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
* @lc app=leetcode.cn id=783 lang=javascript
*
* [783] 二叉搜索树节点最小距离
*/

// @lc code=start
/**
* 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) {
const arr = [];
const traverse = (node) => {
if (!node) return;
traverse(node.left);
arr.push(node.val);
traverse(node.right);
};
traverse(root);
let prev = arr[0],
min = Infinity;
for (let i = 1; i < arr.length; i++) {
const num = arr[i];
min = Math.min(min, Math.abs(num - prev));
prev = num;
}
return min;
};
// @lc code=end