❗️LeetCode_783_二叉搜索树节点最小距离
题目描述:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
示例:
输入:
1 \ 3 / 2
输出: 1
解释: 最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
提示:树中至少有 2 个节点。
|
解法1:中序遍历
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 39 40 41
|
class Solution { public:
int getMinimumDifference(TreeNode* root) {
int ans = INT_MAX, pre = -1;
dfs(root, pre, ans); return ans; }
void dfs(TreeNode* root, int& pre, int& ans) {
if (root == nullptr) return;
dfs(root->left, pre, ans);
if (pre == -1) { pre = root->val; } else { ans = min(ans, root->val - pre); pre = root->val; }
dfs(root->right, pre, ans); }
};
|