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

求两个节点的最低公共祖先

时间:2017-01-25 13:26:12      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:ota   node   pac   二叉树   class   分治   amp   pack   null   

tag: 二叉树

思路一: 分治

思路二:非递归??? 

 

package com.zhaochao.tree;

/**
 * Created by zhaochao on 17/1/24.
 * lowest common ancestor
 */
public class LCA {
    // 在root为根的二叉树中找A,B的LCA:
    // 如果找到了就返回这个LCA
    // 如果只碰到A,就返回A
    // 如果只碰到B,就返回B
    // 如果都没有,就返回null
    public TreeNode LCARec(TreeNode root, TreeNode rootA, TreeNode rootB) {

        if(root == null || root == rootA || root == rootB) {
            return root;
        }

        TreeNode left = LCARec(root.left, rootA, rootB);
        TreeNode right = LCARec(root.right, rootA,rootB);

        if(left != null && right != null) {
            return root;
        }

        if(left != null) {
            return left;
        }

        if(right != null) {
            return right;
        }

        return null;

    }
}

  

求两个节点的最低公共祖先

标签:ota   node   pac   二叉树   class   分治   amp   pack   null   

原文地址:http://www.cnblogs.com/superzhaochao/p/6349314.html

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