题解 | #在二叉树中找到两个节点的最近公共祖先#

在二叉树中找到两个节点的最近公共祖先

http://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116

使用bfs搜索左右子树,由于bfs特性,能优先找到深度最低的节点。 如果o1,o2在当前子树的左右子树上,那么就返回为空的那项。 如果o1,o2都在左子树或者右子树上,那么就返回不为空的节点。

import java.util.*;

public class Solution {
    public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
        return pre(root,o1,o2).val;
    }
    public TreeNode pre(TreeNode root, int o1 , int o2){
        if(root==null || root.val==o1 || root.val==o2)
            return root;
        TreeNode left  = pre(root.left,o1,o2);
        TreeNode right = pre(root.right,o1,o2);
        if(null!=left && null!=right)
            return root;
        return null==left?right:left;
    }
}
全部评论

相关推荐

投递长鑫存储等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务