1123. Lowest Common Ancestor of Deepest Leaves
Posted beatets
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于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