📌 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
对于树的遍历:
- 使用递归是一种高效、简便的方式,不要怕使用递归。
- 对于二叉树的递归又分为三种不同的形式,分别是前序、中序、后序。
- 如果面试要求不使用递归,则可以使用循环解法。
各种顺序的节点遍历顺序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution: def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode: if not root or root == p or root == q: return root
left = self.lowestCommonAncestor(root.left, p, q) right = self.lowestCommonAncestor(root.right, p, q)
if not left: return right if not right: return left
return root
|