思路
1 递归从左子节点找p,q 2 递归从右子节点找p,q 3 如果1,2 找到的结果都不为nil,说明p q分别分布在当前root的两侧,返回root 4 如果1结果返回nil,那结果就是2 的结果,如果2 返回的结果是nil, 那结果就是1 找到的结果
func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
if root == nil {
return nil
}
if root == p || root == q {
return root
}
left := lowestCommonAncestor(root.Left, p, q)
right := lowestCommonAncestor(root.Right, p, q)
if left != nil && right != nil{
return root
}
if right == nil{
return left
}
return right
}