236. 二叉树的最近公共祖先

递归

class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {

        /**
         * 递归终止条件
         * 如果root就是其中之一,那么直接返回root;如果root为空,返回null
         */
        if (root == null || root == p || root == q){
            return root;
        }

        /**
         * 分别在左右子树进行递归查找,如果为空说明在另一棵子树
         * 都不为空时说明左右子树各有一个,那root就是公共祖先
         */
        TreeNode left = lowestCommonAncestor(root.left, p, q);
        TreeNode right= lowestCommonAncestor(root.right, p, q);

        if (left == null){
            return right;
        }
        else if (right == null){
            return left;
        }
        else {
            return root;
        }
    }
}

/**
 * 时间复杂度 O(n)
 * 空间复杂度 O(n)
 */

https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/

上一篇:Markdown学习


下一篇:RedisJson横空出世,性能碾压ES和Mongo