package BinaryTree
func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
if root == nil || root == p || root == q {
return root
}
leftRet := lowestCommonAncestor(root.Left, p, q)
rightRet := lowestCommonAncestor(root.Right, p, q)
if leftRet != nil && rightRet != nil {
return root
}
if leftRet == nil && rightRet == nil {
return nil
}
if leftRet != nil {
return leftRet
} else {
return rightRet
}
}