1123. Lowest Common Ancestor of Deepest Leaves

Posted beatets

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1123. Lowest Common Ancestor of Deepest Leaves相关的知识,希望对你有一定的参考价值。

link to problem

Description:

Given a rooted binary tree, return the lowest common ancestor of its deepest leaves.

Recall that:

  • The node of a binary tree is a leaf if and only if it has no children
  • The depth of the root of the tree is 0, and if the depth of a node is d, the depth of each of its children is d+1.
  • The lowest common ancestor of a set S of nodes is the node A with the largest depth such that every node in S is in the subtree with root A.

Solution:

class Solution:
    def lcaDeepestLeaves(self, root: TreeNode) -> TreeNode:
        
        def helper(node):
            if not node:
                return [node, 0]
            if not node.left and not node.right:
                return [node, 0]
            
            if not node.right:
                left_node, left_dep = helper(node.left)
                return [left_node, left_dep + 1]
            
            if not node.left:
                right_node, right_dep = helper(node.right)
                return [right_node, right_dep + 1]
            
            left_node, left_dep = helper(node.left)
            right_node, right_dep = helper(node.right)
            if left_dep > right_dep:
                return [left_node, left_dep + 1]
            elif left_dep < right_dep:
                return [right_node, right_dep + 1]
            else:
                return [node, left_dep + 1]
        
        return helper(root)[0]

 

Notes:

DFS

recursion

以上是关于1123. Lowest Common Ancestor of Deepest Leaves的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] 1123. Lowest Common Ancestor of Deepest Leaves 最深叶结点的最小公共父节点

LeetCode 236. Lowest Common Ancestor of a Binary Tree; 235. Lowest Common Ancestor of a Binary Searc

1143 Lowest Common Ancestor

1143 Lowest Common Ancestor

1143. Lowest Common Ancestor (30)

Lowest Common Ancestor III