【试题描述】

You are given a binary tree in which each node contains a value. Design an algorithm to print all paths which sum up to that value. Note that it can be any path in the tree-it does not have to start at the root.

输入一个整数和一棵二元树。从树的任意结点开始往下访问所经过的所有结点形成一条路径。

打印出和与输入整数相等的所有路径。

解题思路:

一层一层的遍历,保存当前节点到根节点的完整路径,然后从当前节点向上扫描,如果找到了当前节点到某个节点的和等于给定值,则输出之。程序对每个节点都需要遍历一遍,还要扫描当前节点到根节点的路径,且需要保存每个节点到根节点的路径,所以时间复杂度为O(nlgn),空间复杂度为O(nlgn)。

 1 public static void findAllPath(Node head, int sum, ArrayList<Integer> buffer, int level)
 2     {
 3         if (head == null)
 4             return;
 5         int tmp = sum;
 6         buffer.add(head.value);
 7         for (int i = level; i >= 0; i--)
 8         {
 9             tmp -= buffer.get(i);
10             if (tmp == 0)
11                 print(buffer, i, level);
12         }
13
14         ArrayList<Integer> c1 = (ArrayList<Integer>) buffer.clone();
15         ArrayList<Integer> c2 = (ArrayList<Integer>) buffer.clone();
16
17         findAllPath(head.left, sum, c1, level + 1);
18         findAllPath(head.right, sum, c2, level + 1);
19     }
20
21     private static void print(ArrayList<Integer> buffer, int level, int i2)
22     {
23         System.out.print("找到路径为:");
24         for (int i = level; i <= i2; i++)
25             System.out.print(buffer.get(i) + " ");
26         System.out.println();
27
28     }

【IT笔试面试题整理】二叉树中和为某一值的路径--所有可能路径相关推荐

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

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

  2. 剑指offer面试题34. 二叉树中和为某一值的路径(先序遍历)(回溯)

    题目描述 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 思路 详见链接 代码 class Solution:def ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. response.sendRedirect使用注意事项 .
  2. Variables多种表达
  3. 移动Web利器transformjs入门
  4. 1流明等于多少lux_要想投影仪画质清晰,投影仪流明和对比度不得不看
  5. 端口错误 给Arduino下载程序提示
  6. 关于计算机动画制作的过程,关于计算机制作动画的过程
  7. jspx格式手机打开,jspx来自埃及的java web快速开发框架
  8. layer.js 贤心制作的弹出层插件-不仅仅是弹层
  9. ef power tools mysql_Entity Framework Code First ---EF Power Tool 和MySql一起使用遇到的问题...
  10. Angular5.x多环境配置(开发环境、生产环境、测试环境)
  11. 测试面试题 - GIT
  12. 2020计算机二级报名时间表下半年山东,2020年3月山东省计算机二级报名时间|网上报名入口【12月20日9:00开通】...
  13. NSSCTF-SWPU新生赛
  14. HTML无害化和Sanitize模块
  15. 【华为/华三】PPP
  16. bnu1209 1--0的神奇游戏 C语言版
  17. 计算机视觉领域的大牛主页
  18. iOS 推送通知授权请求优化
  19. Java项目:基于java+ssm服装商城平台(计算机毕业设计)
  20. java遍历List数据的三种写法

热门文章

  1. linux rpm 没有返回,容易忘记的linux命令之rpm
  2. C++ decltype类型说明符(尾置返回类型使用)
  3. 或许每条喵咪上辈子都是陨落的码农
  4. 【Qt for Android】OpenGL ES 绘制彩色立方体
  5. JavaScript解析Json字符串
  6. 64Ubuntu报错Failed to get the adb version:
  7. xml-rpc 以及 xml-rpc 在asp.net中的实现
  8. C#连接池的详细分析(转)
  9. mes实施顾问前景如何_国匠智能制造培训|MES的两种实施顾问类型
  10. c++ string分割字符串split_python 字符串和文本处理