码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树---最近公共父节点(LCA)

时间:2017-07-15 16:44:14      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:roo   treenode   公共祖先   public   nbsp   pre   span   comm   return   

题目:

      给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。

     最近公共祖先是两个节点的公共的祖先节点且具有最大深度。

 

  4
 / 3   7
   /   5   6

LCA(3, 5) = 4

LCA(5, 6) = 7

LCA(6, 7) = 7

 

Java代码:

 public TreeNode lowestCommonAncestor(TreeNode root, TreeNode A, TreeNode B) {
        // write your code here
        if(root == null||root == A||root == B){
            return root;
        }
        //分而
        TreeNode left = lowestCommonAncestor(root.left, A, B);//这里主要用来找根节点子树是否有A或B节点;因为有可能A或B在一侧或者各自在一侧,这是都有可能的。
        TreeNode right = lowestCommonAncestor(root.right, A, B);
        //治之
        if(left!=null&&right!=null){   //如果这个节点不是A或B的话就返回该节点,然后继续往下搜索
            return root;
        }
        if(left!=null){
            return left;
        }
        if(right != null){
            return right;
        }
        return null;
    }

 

二叉树---最近公共父节点(LCA)

标签:roo   treenode   公共祖先   public   nbsp   pre   span   comm   return   

原文地址:http://www.cnblogs.com/junliu37/p/7183214.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!