剑指Offer——二叉树中和为某一值的路径(JS实现) |刷题打卡

简介: 剑指Offer——二叉树中和为某一值的路径(JS实现) |刷题打卡

前言

掘金团队号上线,助你 Offer 临门! 点击 查看详情

题目描述

image.png

解题思路

  • 这道题属于二叉树的深度优先遍历
  • 首先我们要了解DFS的遍历过程
  • 当root节点走到null的时候,说明该条路径已经遍历完毕
  • 当一条路径遍历完毕之后,我们使用浅拷贝的方式将一条路径拷贝进res最终结果数组中
  • 然后开始返回,每次返回都要将stack数组的最后一个元素清空,这是本题的核心点,刚开始被这个问题困扰了很久。

解题代码

var pathSum = function (root, target) {
    const res = [];
    let stack = [];
    function dfs(node) {
        if (!node) return null;
        stack.push(node.val)
        let l = dfs(node.left);
        let r = dfs(node.right);
        if (l === null && r === null) {
            res.push([...stack]);
        }
        stack.pop();
        return;
    }
    dfs(root)
    const temp = res.filter((value) => {
        return value.reduce((pre, cur) => pre + cur, 0) === target;
    })
    return temp;
};

总结(本题给我们的启示思路)

  • 思路一:如何使用DFS算法遍历二叉树。
  • 思路二:在进行遍历的时候,该返回什么?什么时候进行存储才是本题的核心,才应当是我们应该多加练习的地方。
相关文章
|
11月前
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
358 1
|
监控 算法 JavaScript
基于 JavaScript 图算法的局域网网络访问控制模型构建及局域网禁止上网软件的技术实现路径研究
本文探讨局域网网络访问控制软件的技术框架,将其核心功能映射为图论模型,通过节点与边表示终端设备及访问关系。以JavaScript实现DFS算法,模拟访问权限判断,优化动态策略更新与多层级访问控制。结合流量监控数据,提升网络安全响应能力,为企业自主研发提供理论支持,推动智能化演进,助力数字化管理。
331 4
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
925 0
Vue3基础(19)___vite.config.js中配置路径别名
|
算法 JavaScript
JS 【详解】二叉树(含二叉树的前、中、后序遍历技巧和算法实现)
JS 【详解】二叉树(含二叉树的前、中、后序遍历技巧和算法实现)
268 0
若依修改,改若依首页,若依修改了路由不出现如何解决,修改路由必须在permission.js中的白名单添加新的路由,修改了路由,不出现,解决方法是在白名单中添加对应的路径:
若依修改,改若依首页,若依修改了路由不出现如何解决,修改路由必须在permission.js中的白名单添加新的路由,修改了路由,不出现,解决方法是在白名单中添加对应的路径:
若依修改-------控制若依重定向的路径,控制路径重定向的写法路径在,在permission.js文件中控制重定向
若依修改-------控制若依重定向的路径,控制路径重定向的写法路径在,在permission.js文件中控制重定向
|
前端开发 JavaScript Linux
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
|
JavaScript 前端开发 算法
PathFinding.js – 综合性的 JavaScript 路径查找库
  PathFinding.js 是一个综合性的 JavaScript 路径查找库。这个项目的目的是提供一个可以很容易地纳入网页游戏的路径查找库。它可以运行在 Node.js 或浏览器中。提供的在线演示展示了算法是如何执行的。
1420 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
473 2