其他分享
首页 > 其他分享> > 【JS】112. 路径总和

【JS】112. 路径总和

作者:互联网

112. 路径总和

代码

DFS

var hasPathSum = function(root, targetSum) {
    //找到没有根了,那么就说明这条路行不通
    if(!root){
        return false;
    }

    //既没有左节点,也没有右节点,则是叶子节点
    if(!root.left && !root.right){
        return root.val === targetSum; 
    }

    //递归
    return hasPathSum(root.left,targetSum-root.val) || hasPathSum(root.right,targetSum-root.val)
};

复杂度分析:

BFS

队列1则保存节点
队列2用来存放节点到根节点的路径和

var hasPathSum = function(root, targetSum) {
    //过了叶子节点的情况,就是找不到符合的路径
    if(root == null){
        return false;
    }

    var queue1 = [root];
    var queue2 = [root.val];
    //当有节点可以继续拿来用时
    while(queue1.length !== 0){
        //出队列
        var node = queue1.shift();
        var rootVal=queue2.shift();
        //找到叶子节点,并且也符合目标值的情况
        if(node.left == null && node.right == null && rootVal == targetSum){
            return true;
        }
        //继续遍历左节点
        if(node.left){
            //记录往了左节点
            queue1.push(node.left);
            //记录走了后的值为多少
            queue2.push(node.left.val+rootVal);
        }
        //继续遍历右节点
        if(node.right){
            queue1.push(node.right);
            queue2.push(node.right.val+rootVal);
        }
    }
    return false;
};

复杂度分析:

标签:node,right,val,复杂度,JS,112,root,节点,总和
来源: https://www.cnblogs.com/PaturNax/p/16656574.html