程序员面试金典 - 面试题 04.12. 求和路径(二叉树递归)
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. 求和路径(二叉树递归)相关推荐
- 程序员面试金典 - 面试题 04.06. 后继者(循环中序遍历)
1. 题目 设计一个算法,找出二叉搜索树中指定节点的"下一个"节点(也即中序后继). 如果指定节点没有对应的"下一个"节点,则返回null. 示例 1: 输入: ...
- 程序员面试金典 - 面试题 04.09. 二叉搜索树序列(双端队列+回溯)**
1. 题目 从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树. 给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组. 示例: 给定如下二叉树2/ \1 3 返回: ...
- 程序员面试金典 - 面试题 17.12. BiNode(BST中序遍历)
1. 题目 二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点). 实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就 ...
- 程序员面试金典 - 面试题 04.10. 检查子树(双重递归)
1. 题目 检查子树.你有两棵非常大的二叉树:T1,有几万个节点:T2,有几万个节点. 设计一个算法,判断 T2 是否为 T1 的子树. 如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 ...
- 程序员面试金典 - 面试题 04.05. 合法二叉搜索树(中序遍历)
1. 题目 实现一个函数,检查一棵二叉树是否为二叉搜索树. 示例 1: 输入:2/ \1 3 输出: true示例 2: 输入:5/ \1 4/ \3 6 输出: false 解释: 输入为: [5, ...
- 程序员面试金典 - 面试题 04.04. 检查平衡性(二叉树高度)
1. 题目 实现一个函数,检查二叉树是否平衡.在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1. 示例 1: 给定二叉树 [3,9,20,null,null,15,7]3/ ...
- 程序员面试金典 - 面试题 04.03. 特定深度节点链表(BFS)
1. 题目 给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组. 例: 输入:[1,2,3,4,5, ...
- 程序员面试金典 - 面试题 04.01. 节点间通路(图的遍历)
1. 题目 节点间通路.给定有向图,设计一个算法,找出两个节点之间是否存在一条路径. 示例1:输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]],st ...
- 程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)
1. 题目 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-1 ...
最新文章
- Base62x比Base64的编码速度更快吗?
- 利用js种的正则删除html标签
- 工业视觉镜头NAVITAR
- caj转pdf python_PDF怎么转换成Word?2种方法3秒一键转换!建议收藏
- mysql 错误 150_MySQL教程之error 150错误提示解决办法
- Javaspring 1-6课 基本概念及第一个Javaspring程序
- 【java笔记】线程(2):多线程的原理
- Eviews 9.0新功能——估计方法(ARDL、面板自回归、门限回归)
- Java-BufferReader中的readLine()方法
- 说白了 枚举是一个对象中属性的参数值
- 6.18-WizNote MD 指南
- 最通俗PLC教程—源自Koyo光洋PLC自学总结(1)
- centos7 elasticsearch 安装启动问题
- 关于python数据的纬度_Python插值时间,纬度和经度
- Threejs动态箭头
- 信号振铃是什么?如何产生的?
- Java实现宿舍管理系统、基于java、JDBC、GUI(含源文件/综合项目)
- 实战|智能家居行业移动应用性能分析
- 使用OpenCV-Python为照片添加不同滤镜(每天一个python小项目)
- Python+Vue计算机毕业设计东软医疗HIS系统之住院入出转管理子系统7k546(源码+程序+LW+部署)