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

【JS】112. 路径总和

时间:2022-09-05 00:00:29浏览次数:74  
标签:node right val 复杂度 JS 112 root 节点 总和

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)
};

复杂度分析:

  • 时间复杂度:\(O(N)\),N是节点数
  • 空间复杂度:\(O(T)\),T是树节点的高度

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;
};

复杂度分析:

  • 时间复杂度:\(O(N)\),N是节点数
  • 空间复杂度:\(O(N)\),N是树节点的节点数

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

相关文章

  • 2022-08-27 田龙跃 web前端(JS)
    原生JS数据类型Number-数字String-字符串Boolean-布尔型null-空undefined-未定义变量(同var功能相同)letnum1=“das”(let会自己检查变量是否重复定义)constnum......
  • CSS JS 规范+数据类型
    1、CSSJS规范+数据类型window.onload=function(){​//varstr='abc';​//varnum=123;​//varbool=true;​//varund=undefined;......
  • 1.JS快速入门
    1.引入JavaScript1.1引入JavaScript1.内部标签 <script>   alert('HelloWorld!'); </script>2.外部引入xxx.js ....test.html <scriptsrc="xxx.js"......
  • js 实现计数排序
    //计数排序//稳定性:稳定//定义一个数组,将数组中每个元素出现的次数以数组形式保存起来,数组索引值即为具体key,数组索引对应的元素值即为该索引值出现的次数//再将......
  • JS中校验身份证号
    //1城市代码列表varaIdentityCode_City={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:......
  • JS中计算两个时间相差多少天
    functionjsGetSjzyts(rysj1,cysj2){varreturnZyts=0;if((""==rysj1)||(""==cysj2)){returnZyts=0;$('#sjzyts').prop("va......
  • JS根据id将光标定位到html的元素中
    1定位到input元素中varelement=document.getElementById(ys_id);//ys_id为传入的html元素的idelement.focus();ViewCode2 定位到div元素中window.location......
  • js的数组操作方法大全
    js中数组的操作方法大全常见的一些数组操作push,pop,unshift,shiftpush语法array.push(item1,item2,...,itemX)push()方法:可以将一个或者更多的参数添加在数组的尾部......
  • 使用 fetch + React.js 调用 REST API
    JSON:PlaceholderJSON:Placeholder(https://jsonplaceholder.typicode.com/)是一个用于测试的RESTAPI网站。以下使用RxJS6+React.js调用该网站的RESTAPI,......
  • 关于 JSON 引号问题
    JSON的字符串中,字符串的引号必须用单引号,内部的键值必须用双引号importjsonstr='{"a":123,"b":"456"}'str=json.loads(str)print(str)#{'a':123,'b':'4......