Lowest Common Ancestor of Two Nodes in a Binary Tree
2024-10-19 07:32:59
Reference:
http://blog.csdn.net/v_july_v/article/details/18312089
http://leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-tree-part-ii.html
(1) Is the tree a BST or not?
BST的话,我们就能按照BST的定义思考了。当前遍历的node如果比我们要找的两个点都大,说明那两个点都在当前node的左边,所以这两个node的祖先肯定在当前node的左边,所以往左边找。反之,往右边找。如果这两个点一个大于当前node一个小于当前node,说明当前node就是LCA。 如果这两个点一个是另一个的祖先,那么这个点就是LCA。
代码如下:
}
}
(2)那如果不是BST呢?一般Binary Tree.
a. Tree结构中没有parent域。
递归找。
代码如下:
}
b. 如果有parent域。
转化为两个linkedlist的交点问题。
代码如下:
a = a + b;
b = a - b;
a = a - b;
}
Node getLCA(Node p, Node q){
swap(h1, h2);
swap(p, q);
}
q = q.parent;
p = p.parent;
q = q.parent;
}
}
b = a - b;
a = a - b;
}
Node getLCA(Node p, Node q){
swap(h1, h2);
swap(p, q);
}
q = q.parent;
p = p.parent;
q = q.parent;
}
}
最新文章
- [APUE]系统数据文件与信息
- 微信小程序 不在以下合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html
- AP创建会计科目
- 怎么解决mysql不允许远程连接的错误
- 使用R进行倾向得分匹配
- SSO系统的分析与架构
- K650D安装黑苹果
- flask-admin
- Android--WebView的一些配置项
- Openerp上传中文名附件,下载时报错的处理方法
- Windows下JNI执行步骤
- 通过redis的monitor命令排除故障
- Combination Sum —— LeetCode
- 201521123063 《Java程序设计》第三周学习总结
- [LeetCode] Reverse Pairs 翻转对
- C++实现控制台版2048
- xcode8 使用Instruments检测定位并解决iOS内存泄露
- echarts 滚动条 缩放
- hibernate 嵌套事务
- 【Java】 剑指offer(28) 对称的二叉树
热门文章
- [Linux]CentOS下安装和使用tmux
- 【jquery】:表单返回信息
- Git平台使用时的配置分析
- IIS7.5支持html页面包含(include)html页面
- JAVA_BaseDAO数据处理类
- [fn]焦点图JQ插件版
- 第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析
- (原创)学习MCU的感悟_初级(MCU,经验)
- 以太网客户端提示windows系统自带共享代理解决方法
- Linux Kernel 3.11 正式版发布