当前位置: 首页 > 科技观察

说说日常算法的路径之和_0

时间:2023-03-22 16:46:08 科技观察

本文转载自微信公众号《三分钟学会前端》,作者安姐。转载本文请联系三分钟学习前端公众号。树的基础知识看这里:适合初学者的树给定一棵二叉树和一个目标和,判断树中是否存在从根节点到叶子节点的路径,以及所有节点值的和在这条路径上等于目标总和。解释:叶节点是指没有子节点的节点。例子:给定如下二叉树,目标和=22,5/\48//\11134/\\721返回true,因为从目标和为22的根节点到叶子节点5有路径->4->11->2。解题思路:如果当前节点不是叶子节点,只需要遍历整棵树,递归其所有子节点,传入的参数为sum减去当前节点值;如果当前节点是叶子节点,判断参数sum是否等于当前节点值,相等则返回true,否则返回false。代码实现:varhasPathSum=function(root,sum){//根节点为空if(root===null)returnfalse;//叶子节点的sum参数等于叶子节点的值if(root.left===null&&root.right===null)returnroot.val===sum;//sum减去当前值,递归sum=sum-root.valreturnhasPathSum(root.left,sum)||hasPathSum(root.right,sum);};解题思路:如果当前节点不是叶子节点,只需要遍历整棵树,递归其所有子节点,传入的参数为sum减去当前节点值;如果当前节点是叶子节点,判断参数sum是否等于当前节点值,相等则返回true,否则返回false。代码实现:varhasPathSum=function(root,sum){//根节点为空if(root===null)returnfalse;//sum参数等于叶节点的值if(root.left===null&&root.right===null)returnroot.val===sum;|hasPathSum(root.right,sum);};leetcode:https://leetcode-cn.com/problems/path-sum/solution/javascript-lu-jing-zong-he-by-user7746o/