LeetCode_530_二叉搜索树的最小绝对差
廖家龙 用心听,不照做

❗️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
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
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);
}

};