给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。
示例 1:
输入:root = [4,2,6,1,3]
输出:1
示例 2:
输入:root = [1,0,48,null,null,12,49]
输出:1
考虑到二叉搜索数的特点,需要对树进行中序遍历,计算中序序列的前后差值的最小值。
class Solution {
public:
void dfs(TreeNode* root, int& ans, int& pre){
if(root==nullptr)
return;
dfs(root->left, ans, pre);
if(pre==-1){
pre = root->val;
}else{
ans = min(ans, abs(root->val - pre));
pre = root->val;
}
dfs(root->right, ans, pre);
}
int getMinimumDifference(TreeNode* root) {
int ans = INT_MAX, pre = -1;
dfs(root, ans, pre);
return ans;
}
};
网友评论