Leetcode 530. 二叉搜索树的最小绝对差
题目
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
示例:
输入:
1
\
3
/
2
输出:
1
解释:
最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
提示:
- 树中至少有 2 个节点。
- 本题与 783https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/相同
题解
对于二叉搜索树,其中序遍历的线性序列是递增的。我们要找最小绝对差,显然是中序遍历的相邻结点上。故我们进行中序遍历,让本结点-上一结点,从而求出最小绝对差。详细过程见代码
代码
int ans=INT_MAX;
int pre;
bool one=true;
void search(TreeNode* root){
if(root == NULL) return;
search(root->left);
if(!one) ans = min(ans,abs(pre-root->val)); //有前一节点
pre = root->val;
one = false;
search(root->right);
}
int getMinimumDifference(TreeNode* root) {
search(root);
return ans;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。