递归其实很迷的在于。你不知道他在哪做的判断处理
其实判断处理在第一行= =。。
func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode?, _ q: TreeNode?) -> TreeNode? {
if root == nil || root === p || root === q {
return root
}
let left = lowestCommonAncestor(root?.left, p, q)
let right = lowestCommonAncestor(root?.right, p, q)
if (left != nil) && (right != nil) {
return root
}
return left == nil ? right : left
}
网友评论