1.题目
2.题目意思
题目中说的很清楚了
3.代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
if root in (None, p, q):
return root
L = self.lowestCommonAncestor(root.left, p, q)
R = self.lowestCommonAncestor(root.right, p, q)
return R if None==L else L if None == R else root
思路:递归~
思路很清晰,首先判断root
是不是祖先,如果不是,开始递归。看左节点是不是祖先,再看右节点是不是祖先,一直这样递归查看下去。最后返回的时候,有祖先肯定返回祖先,没有祖先返回值就是None。如果这个节点的左右子节点的返回值都是None,说明祖先是这个节点。
冲冲冲~