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

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

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

注意o1和o2是int,最后返回的也是int
postOrder的作用:

  1. 如果o1和o2都在,返回root;
  2. 如果有一个在,返回那一个;
  3. 都不在,返回None
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

#
# 
# @param root TreeNode类 
# @param o1 int整型 
# @param o2 int整型 
# @return int整型
#
class Solution:
    def lowestCommonAncestor(self , root , o1 , o2 ):
        # write code here
        def postOrder(root, o1, o2):              
            if not root or root.val==o1 or root.val==o2:                
                return root            
            left_LCA = postOrder(root.left, o1, o2)
            right_LCA = postOrder(root.right, o1, o2)            
            if left_LCA and right_LCA:
                return root
            elif (not left_LCA) and (not right_LCA):
                return None
            else:
                if left_LCA:
                    return left_LCA
                else:
                    return right_LCA
        return postOrder(root, o1, o2).val
全部评论

相关推荐

机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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