首页 > 其他分享 >BM29 二叉树中和为某一值的路径(一)

BM29 二叉树中和为某一值的路径(一)

时间:2023-01-02 21:34:14浏览次数:51  
标签:BM29 val 递归 sum 二叉树 return root 节点 一值

题目描述

image

思路分析

采用递归的方法,左(右)子树的sum = sum - root.val
每次都减去当前的root值,如果左子树或者右子树的节点值等于sum,则说明找到了,返回true,否则当root为空时,退出当前递归,说明找不到,返回false

代码参考

// 传递过来的每一个节点,我们都要思考,当前节点需要做什么,下一步递归条件是什么,退出条件是什么
function hasPathSum (root, sum) {
  // 递归退出条件
  if (!root) return false
  // 叶子节点,且叶子节点符合要求,即为找到了
  if (!root.left && !root.right && root.val === sum) return true
  // 没有找到,则继续向下递归查找,左子树或右子树有一条符合条件便返回
  return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val)
}

标签:BM29,val,递归,sum,二叉树,return,root,节点,一值
From: https://www.cnblogs.com/zx529/p/17020573.html

相关文章

  • 力扣110 判断是否是平衡二叉树
    力扣110判断是否是平衡二叉树题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对......
  • leetcode-617. 合并二叉树
    617.合并二叉树-力扣(Leetcode)递归合并二叉树easy/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint*Left*TreeNode*......
  • 力扣107 二叉树的层序遍历
    力扣107二叉树的层序遍历题目:给你二叉树的根节点root,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例1:输入:root......
  • 14.平衡二叉树(AVL树)
    左旋转思想:当右子树的高度比左子树的高度高时(并且高度差绝对值超过了1时)代码示例:packagecn.com.avlTree;/***平衡二叉树*/publicclassAvlTreeDemo{......
  • leetcode-606. 根据二叉树创建字符串
    606.根据二叉树创建字符串-力扣(Leetcode)前序遍历/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint*Left*TreeNode*......
  • 力扣105 根据先序遍历以及中序遍历构建二叉树
    力扣105根据先序遍历以及中序遍历构建二叉树题目:给定两个整数数组preorder和inorder,其中preorder是二叉树的先序遍历,inorder是同一棵树的中序遍历,请构造二叉树......
  • 力扣104 求二叉树的最大深度
    力扣104求二叉树的最大深度题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示......
  • BM27 按之字形顺序打印二叉树
    题目描述思路分析这题在上一道层序遍历的基础上会更加方便。我们之前就可以得到每一层的数据,此时只是对每一层的遍历顺序做相应的处理即可注意:1.我们在向tempQueue......
  • BM26 求二叉树的层序遍历
    题目描述思路分析外部使用一个容器来存储,借助一个临时的栈来存储每一层的节点,之后根绝临时栈不为空的条件来遍历每一层,并将结果存到容器中代码参考constlevelOrder=......
  • 二叉树的先中后序遍历
    二叉树:每个节点最多只有两个字节点JS中通常用Object来模拟二叉树(val:1,left:0,right:0)constbt={val:1,left:{......