找出二叉查找树中指定结点的”下一个"结点(也即中序后继)

《找出二叉查找树中指定结点的”下一个设计一个算法,找出二叉查找树中指定结点的“下一个“结点(也即中序后继)。可以假定每个结点都含有指向父结点的连接。

《找出二叉查找树中指定结点的”下一个《找出二叉查找树中指定结点的”下一个

下面是该算法的实现代码(已正确处理结点为空的情况)

public TreeNode inorderSucc(TreeNode n)
{
if(n==null) return null;
/*
找到右子结点,则返回右子树里最左边的结点
*/
if(n.right!=null)
{
return leftMostChild(n.right);
}
else
{
TreeNode q=n;
TreeNode x=q.parent;
//向上直至位于左边而不是右边
while(x!=null&&x.left!=q)
{
q=x;
x=x.parent;
}
return x;
}
}

public TreeNode leftMostChild(TreeNode n)
{
if(n==null)
return null;
while(n.left!=null)
{
n=n.left;
}
return null;

}

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/wangfengfan1/article/details/47864399
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞