题目描述:

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

输入:

每个测试案例包括n+1行:

第一行为2个整数n,k(1<=n<=10000),n表示结点的个数,k表示要求的路径和,结点编号从1到n。

接下来有n行。这n行中每行为3个整数vi,leftnode,rightnode,vi表示第i个结点的值,leftnode表示第i个结点的左孩子结点编号,rightnode表示第i个结点的右孩子结点编号,若无结点值为-1。编号为1的结点为根结点。

输出:

对应每个测试案例,先输出“result:”占一行,接下来按字典顺序输出满足条件的所有路径,这些路径由结点编号组成,输出格式参照输出样例。

样例输入:
5 22
10 2 3
5 4 5
12 -1 -1
4 -1 -1
7 -1 -1
1 5
1 -1 -1
样例输出:
result:
A path is found: 1 2 5
A path is found: 1 3
result:

OJ有一点不爽就是你明知道答案是对的,但格式不对害死人。这题就是一道树的遍历,注意的是左右子树的顺序,有可能做子树编号大于右子树的,所以先要判断一下,遍历编号小的。
 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4
 5 struct Node
 6 {
 7     int val;
 8     int left, right;
 9 };
10
11 Node node[10001];
12
13 void print(int index, int sum, int needSum, vector<int> path)
14 {
15     path.push_back(index);
16
17     if (index == -1)
18         return;
19
20     sum += node[index].val;
21
22     if (node[index].left == -1 && node[index].right == -1)
23     {
24         if (sum == needSum)
25         {
26             cout << "A path is found:";
27             for(int i = 0; i < path.size(); i++)
28                 cout << " " << path[i];
29             cout << endl;
30         }
31         return;
32     }
33
34     if (node[index].left < node[index].right)
35     {
36         print(node[index].left, sum, needSum, path);
37         print(node[index].right, sum, needSum, path);
38     }
39     else
40     {
41         print(node[index].right, sum, needSum, path);
42         print(node[index].left, sum, needSum, path);
43     }
44 }
45
46 int main()
47 {
48     int n, sum;
49     while(cin >> n >> sum)
50     {
51         for(int i = 1; i <= n; i++)
52             cin >> node[i].val >> node[i].left >> node[i].right;
53
54         vector<int> path;
55         cout << "result:" << endl;
56         print(1, 0, sum, path);
57     }
58 }

转载于:https://www.cnblogs.com/chkkch/archive/2012/11/21/2780730.html

[九度][何海涛] 二叉树中和为某一值的路径相关推荐

  1. C#刷剑指Offer | 二叉树中和为某一值的路径

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第292篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  2. 剑指offer:面试题34. 二叉树中和为某一值的路径

    题目:二叉树中和为某一值的路径 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 示例: 给定如下二叉树,以及目标和  ...

  3. 《剑指offer》— JavaScript(24)二叉树中和为某一值的路径

    二叉树中和为某一值的路径 题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 思路 前序遍历二叉树, ...

  4. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表

    一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...

  5. 剑指 Offer 34. 二叉树中和为某一值的路径【附完整可运行代码】

    立志用最少的代码做最高效的表达 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 示例: 给定如下二叉树,以及目标和 ...

  6. 数据结构与算法-- 二叉树中和为某一值的路径

    二叉树中和为某一值的路径 题目:输入一颗二叉树和一个整数,打印出二叉树中节点值的和为给定值的所有路径.从树的根节点开始往下一只到叶子节点所经过的节点形成一条路径. 我们用二叉树节点的定义沿用之前文章中 ...

  7. 【LeetCode】剑指 Offer 34. 二叉树中和为某一值的路径

    [LeetCode]剑指 Offer 34. 二叉树中和为某一值的路径 文章目录 [LeetCode]剑指 Offer 34. 二叉树中和为某一值的路径 package offer;import ja ...

  8. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

  9. 【LRD,DLR】BST的后续遍历序列,二叉树中和为某一值的路径

    D是Degree,后续遍历就是LRD,前序遍历就是DLR. 面试题33:BST的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false. ...

  10. 【剑指offer-Java版】25二叉树中和为某一值的路径

    二叉树中值和为某一值的路径:类似图的深度优先遍历 对于此类问题一直有点弱,多想几次就OK了–主要是不熟悉,毕竟代码写出来之后一看就明白,但是自己想的时候还是有点困难 public class _Q25 ...

最新文章

  1. 3名女研究生,状告哈佛!
  2. 扩增子分析QIIME2(2018.6). 1简介和安装
  3. R可视化绘制t分布(t Distribution)
  4. 半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架
  5. c++中c_str()函数
  6. EWM RF 开发常用代码
  7. 【问题记录】python的py文件生成exe可执行程序闪退
  8. Java中httpClient中的设置超时时间
  9. 阿里云centos7使用yum安装mysql的正确姿势
  10. java怎样读取数据库表中字段的数据类型?
  11. BZOJ2658 ZJOI2012 小蓝的好友(treap)
  12. 干货 | PyTorch常用代码段整理合集
  13. 第 1 章 程序员考试简介
  14. Python 获取当天零点时间戳
  15. Javascript鼠标悬停显示子菜单的大型分类菜单
  16. 手机支付宝服务器安全证书安装不了,手机上如何安装支付宝的安全证书?
  17. 2020全国高校计算机能力挑战赛(word模拟题)
  18. flask中flash(闪现)的使用
  19. TAGE-SC-L Branch Predictors
  20. 思考 |《爱好》—— 我真的做到了!

热门文章

  1. 【“达观杯”冠军分享】预训练模型彻底改变了NLP,但也不能忽略传统方法带来的提升...
  2. 非名校毕业,如何在六天面试六家顶尖科技公司,并拿到全部Offer?
  3. 20191127_朴素贝叶斯多分类
  4. jupyter notebook 多行输出
  5. 统计学习方法读书笔记4-感知机课后习题
  6. Pycharm 相关使用方法
  7. 书单丨5本经典著作描绘C++学习路线图
  8. 产品管理有行业特殊性吗
  9. 大淘宝的终极商业阶段
  10. 年轻设计师之于《未来产品的设计》