1. 题目

给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。

设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。

注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。

示例:
给定如下二叉树,以及目标和 sum = 22,5/ \4   8/   / \11  13  4/  \    / \7    2  5   1
返回:3
解释:和为 22 的路径有:[5,4,11,2], [5,8,4,5], [4,11,7]提示:
节点总数 <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/paths-with-sum-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 遍历每个节点,并从该节点开始计算和
class Solution {int count = 0;
public:int pathSum(TreeNode* root, int sum) {if(!root) return 0;calsum(root,0,sum);pathSum(root->left,sum);pathSum(root->right,sum);return count;}void calsum(TreeNode* root, int s, int sum){if(!root)  return;if(s+root->val == sum)count++;calsum(root->left,s+root->val,sum);calsum(root->right,s+root->val,sum);}
};

程序员面试金典 - 面试题 04.12. 求和路径(二叉树递归)相关推荐

  1. 程序员面试金典 - 面试题 04.06. 后继者(循环中序遍历)

    1. 题目 设计一个算法,找出二叉搜索树中指定节点的"下一个"节点(也即中序后继). 如果指定节点没有对应的"下一个"节点,则返回null. 示例 1: 输入: ...

  2. 程序员面试金典 - 面试题 04.09. 二叉搜索树序列(双端队列+回溯)**

    1. 题目 从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树. 给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组. 示例: 给定如下二叉树2/ \1 3 返回: ...

  3. 程序员面试金典 - 面试题 17.12. BiNode(BST中序遍历)

    1. 题目 二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点). 实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就 ...

  4. 程序员面试金典 - 面试题 04.10. 检查子树(双重递归)

    1. 题目 检查子树.你有两棵非常大的二叉树:T1,有几万个节点:T2,有几万个节点. 设计一个算法,判断 T2 是否为 T1 的子树. 如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 ...

  5. 程序员面试金典 - 面试题 04.05. 合法二叉搜索树(中序遍历)

    1. 题目 实现一个函数,检查一棵二叉树是否为二叉搜索树. 示例 1: 输入:2/ \1 3 输出: true示例 2: 输入:5/ \1 4/ \3 6 输出: false 解释: 输入为: [5, ...

  6. 程序员面试金典 - 面试题 04.04. 检查平衡性(二叉树高度)

    1. 题目 实现一个函数,检查二叉树是否平衡.在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1. 示例 1: 给定二叉树 [3,9,20,null,null,15,7]3/ ...

  7. 程序员面试金典 - 面试题 04.03. 特定深度节点链表(BFS)

    1. 题目 给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组. 例: 输入:[1,2,3,4,5, ...

  8. 程序员面试金典 - 面试题 04.01. 节点间通路(图的遍历)

    1. 题目 节点间通路.给定有向图,设计一个算法,找出两个节点之间是否存在一条路径. 示例1:输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]],st ...

  9. 程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)

    1. 题目 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-1 ...

最新文章

  1. Base62x比Base64的编码速度更快吗?
  2. 利用js种的正则删除html标签
  3. 工业视觉镜头NAVITAR
  4. caj转pdf python_PDF怎么转换成Word?2种方法3秒一键转换!建议收藏
  5. mysql 错误 150_MySQL教程之error 150错误提示解决办法
  6. Javaspring 1-6课 基本概念及第一个Javaspring程序
  7. 【java笔记】线程(2):多线程的原理
  8. Eviews 9.0新功能——估计方法(ARDL、面板自回归、门限回归)
  9. Java-BufferReader中的readLine()方法
  10. 说白了 枚举是一个对象中属性的参数值
  11. 6.18-WizNote MD 指南
  12. 最通俗PLC教程—源自Koyo光洋PLC自学总结(1)
  13. centos7 elasticsearch 安装启动问题
  14. 关于python数据的纬度_Python插值时间,纬度和经度
  15. Threejs动态箭头
  16. 信号振铃是什么?如何产生的?
  17. Java实现宿舍管理系统、基于java、JDBC、GUI(含源文件/综合项目)
  18. 实战|智能家居行业移动应用性能分析
  19. 使用OpenCV-Python为照片添加不同滤镜(每天一个python小项目)
  20. Python+Vue计算机毕业设计东软医疗HIS系统之住院入出转管理子系统7k546(源码+程序+LW+部署)

热门文章

  1. cad常用字体包_水利设计CAD基础篇(一)
  2. Linux文件属性1——文件类型
  3. C++起航篇——bool类型,输入输出,命名空间
  4. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...
  5. Golang切片的三种简单使用方式及区别
  6. 2018 Multi-University Training Contest 3
  7. redis安装与基本配置
  8. js中的四舍五入函数
  9. poj 3469(网络流模版)
  10. 常用的匹配正则表达式