跳转至

LC236 - 二叉树的最近公共祖先

LowestCommonAncestor.go
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
    }
}

LCA问题,直接记模板。