找出二叉查找树中指定结点的”下一个"结点(也即中序后继)
2017-07-05 16:49
281 查看
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/panic.gif)
设计一个算法。找出二叉查找树中指定结点的“下一个“结点(也即中序后继)。能够假定每一个结点都含有指向父结点的连接。
以下是该算法的实现代码(已正确处理结点为空的情况)
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;
}
相关文章推荐
- 找出二叉查找树中指定结点的”下一个"结点(也即中序后继)
- 设计一个算法,找出二叉查找树中指定结点的“下一个“结点(也即中序后继)。可以假定每个结点都含有指向父结点的连接。
- 找出二叉树中指定结点的下一个结点(中序后继)可以假定每个结点都有指向父节点的连接
- 程序员面试金典: 9.4树与图 4.6找出二叉查找树指定结点的下一个结点
- 4.6 找出二叉树中指定节点的下一个节点(中序后继),假定每个节点有父指针。
- "System.Data.OleDb.OleDbException: 无法从指定的数据表中删除"的解决办法
- 有DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"和无指定时的css差异
- 如何截取指定长度汉字而不会出现以"?>"结尾,超出部分以"..."代替
- windows中无法删除文件,报"无法删除****,找不到指定文件,请确定指定的路径及文件名是否正确"的解决
- Visual Studio .NET已检测到指定的Web服务器运行的不是ASP.NET 1.1 版..."的解决办法
- OLE DB 访问接口 "SQLNCLI" 返回了消息 "未指定的错误"。
- "路径和文件名总长度必须不能超过 260 个字符! 系统找不到指定的路径"的解决方法
- windows2003计划任务不能启动,"指定的错误是:0x80070005: 拒绝访问"
- ASP.NET中引用dll“找不到指定模块"的完美解决办法[转]
- NET截取指定长度汉字超出部分以"..."代替
- 安装Apache时,系统找不到指定的文件 No installed service named "Apache2"的解决办法
- loadlibrary("")失败-找不到指定得模块组件注册失败-处理办法
- 输入数列,以某数为结束标志, 以"后进先出" 方式生成单链表,输出表中各结点的值;再求表中首结点和尾结点的值。
- JTree展开结点设置为'+'"-"形式
- oracle的listener无法启动"错误3,系统找不到指定路径"