您的位置:首页 > 其它

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

2017-07-05 16:49 281 查看


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







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

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐