美文网首页
LeetCode 236 二叉树的最近公共祖先 Lowest C

LeetCode 236 二叉树的最近公共祖先 Lowest C

作者: 划水型派大星 | 来源:发表于2019-05-08 10:38 被阅读0次

    有关二叉树的做题笔记,Python实现

    二叉树的定义

    # Definition for a binary tree node.
    class TreeNode:
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    

    236. 二叉树的最近公共祖先 Lowest Common Ancestor of a Binary Tree

    LeetCodeCN 第236题链接

    首先如果root为空,返回root,然后如果root就是p或者q,那root就是最近公共祖先。然后分别对左子树和右子树做递归并保存结果,如果两边都能找到,证明本节点就是最近公共祖先,如果一边找得到,一边找不到,则往能找到的那边继续找下去。

    class Solution:
        def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
            if root is None:
                return None
            if root == p or root == q:
                return root
            left = self.lowestCommonAncestor(root.left, p, q)
            right = self.lowestCommonAncestor(root.right, p, q)
            if left or right:
                if left is None:
                    return right
                elif right is None:
                    return left
                else:
                    return root
            else:
                return None
    

    下一题:235. 二叉搜索树的最近公共祖先 Lowest Common Ancestor of a Binary Search Tree

    相关文章

      网友评论

          本文标题:LeetCode 236 二叉树的最近公共祖先 Lowest C

          本文链接:https://www.haomeiwen.com/subject/cyzpoqtx.html