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;
         }
         
              }

最新文章

  1. [APUE]系统数据文件与信息
  2. 微信小程序 不在以下合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html
  3. AP创建会计科目
  4. 怎么解决mysql不允许远程连接的错误
  5. 使用R进行倾向得分匹配
  6. SSO系统的分析与架构
  7. K650D安装黑苹果
  8. flask-admin
  9. Android--WebView的一些配置项
  10. Openerp上传中文名附件,下载时报错的处理方法
  11. Windows下JNI执行步骤
  12. 通过redis的monitor命令排除故障
  13. Combination Sum —— LeetCode
  14. 201521123063 《Java程序设计》第三周学习总结
  15. [LeetCode] Reverse Pairs 翻转对
  16. C++实现控制台版2048
  17. xcode8 使用Instruments检测定位并解决iOS内存泄露
  18. echarts 滚动条 缩放
  19. hibernate 嵌套事务
  20. 【Java】 剑指offer(28) 对称的二叉树

热门文章

  1. [Linux]CentOS下安装和使用tmux
  2. 【jquery】:表单返回信息
  3. Git平台使用时的配置分析
  4. IIS7.5支持html页面包含(include)html页面
  5. JAVA_BaseDAO数据处理类
  6. [fn]焦点图JQ插件版
  7. 第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析
  8. (原创)学习MCU的感悟_初级(MCU,经验)
  9. 以太网客户端提示windows系统自带共享代理解决方法
  10. Linux Kernel 3.11 正式版发布