[LeetCode] 236. Lowest Common Ancestor of a Binary Tree

Semidragon·2023년 11월 25일
0

CodingTest

목록 보기
36/80

1. Question

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).”

Example 1:

Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
Output: 3
Explanation: The LCA of nodes 5 and 1 is 3.

Example 2:

Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
Output: 5
Explanation: The LCA of nodes 5 and 4 is 5, since a node can be a descendant of itself according to the LCA definition.

Example 3:

Input: root = [1,2], p = 1, q = 2
Output: 1

2. Thoughts

Will need to retry this later

3. Tips learned

4. My solution

Couldn't Solve..

5. AI Solution and Improvements

From Solutions at Leetcode:

class Solution:
    def lowestCommonAncestor(
        self, root: "TreeNode", p: "TreeNode", q: "TreeNode"
    ) -> "TreeNode":
        def dfs(node):
            if not node or node == p or node == q:
                return node
            print(node.val)
            left = dfs(node.left)
            right = dfs(node.right)
            print(left,right )
            if left and right:
                return node
            elif left:
                return left
            elif right:
                return right
            else:
                return None
        return dfs(root)
profile
Semidragon's network [CS undergrad @ Sungkyunkwan University | Networks + System @ CSI]

0개의 댓글