给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值。
(以下是参考他人的)
解:二叉树搜索树的中序遍历是升序序列
public:
int getMinimumDifference(TreeNode* root) {
int res=INT_MAX,pre=-1;
Inoder(root,res,pre);
return res;
}
private:
void Inoder(TreeNode* root,int &res,int &pre){//这里的两个参数都要用到引用,因为是递归调用,如果不用引用,则深层改变后的值不会影响到第一层递归的调用
if(!root)
return;
Inoder(root->left,res,pre);
if(pre!=-1)
{
res=min(res,root->val-pre);//res最初是int最大值,现在根据min得出更小的
}
pre=root->val;
Inoder(root->right,res,pre);
}
网友评论