题解 | #在二叉树中找到两个节点的最近公共祖先#
在二叉树中找到两个节点的最近公共祖先
https://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116
python3,递归。
所谓最近公共祖先,就是刚好分左右子树可以找到两个点。非最近(更高的)公共祖先,只能在某一边子树中找到两个点。
class Solution: # 所谓最近公共祖先,就是刚好分左右子树可以找到两个点。非最近公共祖先,只能在某一边子树中找到两个点。 def lowestCommonAncestor(self , root: TreeNode, o1: int, o2: int) -> int: # 该子树没找到,返回-1 if not root: return -1 # 找到了,赋值 if root.val == o1 or root.val == o2: return root.val # 左子树寻找 left = self.lowestCommonAncestor(root.left, o1, o2) # 右子树寻找 right = self.lowestCommonAncestor(root.right, o1, o2) if left == -1: return right if right == -1: return left # 正好左右都找到了,就是当前节点 return root.val
