1123. 最深叶节点的最近公共祖先
题目描述
解题思路
如果当前节点是最深叶子节点的最近公共祖先,那么它的左右子树的高度一定是相等的,否则高度低的那个子树的叶子节点深度一定比另一个子树的叶子节点的深度小,因此不满足条件。所以只需要dfs遍历找到左右子树高度相等的根节点即出答案。
代码实现
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def lcaDeepestLeaves(self, root: TreeNode) -> TreeNode:
if not root:
return
left = self.get_depth(root.left)
right = self.get_depth(root.right)
if left == right:
return root
elif left > right:
return self.lcaDeepestLeaves(root.left)
else:
return self.lcaDeepestLeaves(root.right)
def get_depth(self, root: TreeNode) -> int:
# 获取一棵树的最大深度
if not root:
return 0
l = self.get_depth(root.left)
r = self.get_depth(root.right)
return max(l, r) + 1