1123. Lowest Common Ancestor of Deepest Leaves
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 isd+1
. - The lowest common ancestor of a set
S
of nodes is the nodeA
with the largest depth such that every node in S is in the subtree with rootA
.
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