DFS

LeetCode 236 Lowest Common Ancestor of a Binary Tree (Python)

Posted by 小明MaxMing on November 2, 2024

题目

Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.

According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”

解题思路

递归,如果左右两边都能找到p或者q,则返回该节点,否则返回结果非空的子树

代码

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

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

视频讲解 YouTube<--欢迎点击订阅

视频讲解 bilibili<--欢迎点击订阅