找寻二叉树中两个节点的公共父节点中最近的那个节点
来源:互联网 发布:特里斯坦·汤普森数据 编辑:程序博客网 时间:2024/05/22 02:21
情况1. 节点只有left/right,没有parent指针,root已知
情况2. root未知,但是每个节点都有parent指针
情况3. 二叉树是个二叉查找树,且root和两个节点的值(a, b)已知
如果每个节点包含父亲指针,把两个节点到根的路径都记录下来,两条路径的最后面的元素肯定相同,从两条路径的最后一个元素向前比较,直到第一次出现分叉为止,就可以找到最近节点。复杂度为O(n),路径最长可能是n。如果不包含父亲节点,那就先前序遍历二叉树,遍历的时候可以像哈夫曼树那样左右01编号,记录给定两节点的到达路径,最后比较两个0,1序列的前面位数,直到出现不相等为止,就找到最近父节点,复杂度也是O(n)
情况3. 二叉树是个二叉查找树,且root和两个节点的值(a, b)已知
Node findLowestCommonAncestor(Node root,
int value1, int value2){
while( root!=null){
int value = root.getValue();
if (value>value1 && value>value2) {
root = root.getLeft();
}
else if (value<value1 && value<value2) {
root = root.getright();
}
else {
return root;
}
}
}
- 找寻二叉树中两个节点的公共父节点中最近的那个节点
- 找寻二叉树中两个节点的公共父节点中最近的那个节点
- 找寻二叉树中两个节点的公共父节点中最近的那个节点
- 找寻二叉树中两个节点的公共父节点中最近的那个节点的三种情况
- 找寻二叉树中两个节点的公共父节点中最近的那个节点的三种情况
- 二叉树的每个节点都有父节点引用的,找寻该二叉树中两个节点最近的公共父节点
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个节点的最近公共父节点
- 二叉树中两个子节点的最近公共节点
- 二叉树中两个节点的最近公共祖先节点
- 二叉树中两个节点的最近公共祖先节点
- 二叉树中两个节点的最近公共节点
- 二叉树中两个节点的最近公共祖先节点
- 二叉树中两个节点的最近公共祖先节点
- 网站美工需要美术基础吗??
- dns 信息文件
- 搜索引擎——信息检索实践
- 转帖一篇:截取密码(VC++)学习消息VC++的好处
- 用VC做视频播放器
- 找寻二叉树中两个节点的公共父节点中最近的那个节点
- Windows 下的 MySQL 主从关系配置
- iphone4 的确有很多功能和亮丽的界面领导者潮流
- 你不是菜鸟2:他为什么没过试用期
- 哈哈 我来也
- 喜欢CSDN
- GDI+(矩阵,可用于做投票)
- 第一篇笔记
- u-boot源码配置原理分析