给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。
解题思路:二叉搜索树的中序遍历是递增的,我们在递归处理中这个节点时做一个取差的行为,pre = -1是用来避免根节点不能直接递归。
class Solution {
public:
int ans = INT_MAX;
int getMinimumDifference(TreeNode* root) {
int 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);
}
};