力扣236. 二叉树的最近公共祖先(JavaScript)

 //找到节点则返回
 //自低向上遍历(后序)查找公共祖先
var lowestCommonAncestor = function(root, p, q) {
    //查找当前子树中是否有p或q
    const dd=function(root,p,q){
        //中止递归的条件
        //如果找到返回节点值,如果没找到,返回的是null
        if(root==null||root==p||root==q){
            return root 
        }
        //后序
        let left=dd(root.left,p,q)   //查找左子树中是否有
        let right=dd(root.right,p,q)    //查找右子树中是否有

        //如果左右子树都不为空代表都找到了值
        if(left!==null&&right!==null){
            //则当前节点为公共祖先
            return root
        }
        //如果左子树找不到,需要知道右子树的结果才能判断当前子树是否含有对应的值
        if(left==null){
            return right
        }
        //如果右子树找不到,需要知道右子树的结果才能判断当前子树是否含有对应
        if(right==null){
            return left
        }
    }
    return dd(root,p,q)
};


版权声明:本文为csD_Dscnnnnnnn原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。