【IT笔试面试题整理】二叉树中和为某一值的路径--所有可能路径
来源:互联网 发布:好看的美国电影 知乎 编辑:程序博客网 时间:2024/05/01 14:52
【试题描述】
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 }
阅读全文
0 0
- 【IT笔试面试题整理】二叉树中和为某一值的路径--所有可能路径
- 【IT笔试面试题整理】二叉树中和为某一值的路径--从根到叶子节点
- 面试题04 - 二叉树中和为某一值的所有路径 [树]
- [程序员面试题精选100题]4.二叉树中和为某一值的所有路径
- 剑指offer面试题之二叉树中和为某一值的所有路径
- 【笔试】42、二叉树中和为某一值的路径
- 二叉树经典面试题6~二叉树中和为某一值的路径
- 二叉树中和为某一值的所有路径
- 面试题25:二叉树中和为某一值得路径
- 面试题-二元树中和为某一值的所有路径[数据结构]
- 面试题25:二叉树中和为某一值的路径
- 面试题23:二叉树中和为某一值的路径
- 面试题25:二叉树中和为某一值的路径
- 【面试题二十五】二叉树中和为某一值的路径
- 【剑指offer】面试题25:二叉树中和为某一值的路径
- 二叉树中和为某一值的路径(面试题 25)
- 剑指Offer:面试题25 二叉树中和为某一值的路径
- 面试题25 二叉树中和为某一值的路径
- JavaScript模块化 --- Commonjs、AMD、CMD、ES6 modules
- 【IT笔试面试题整理】数组中出现次数超过一半的数字
- 【IT笔试面试题整理】二叉树中和为某一值的路径--从根到叶子节点
- Centos7防火墙
- 【CB Insights全球最强AI创新公司Top100榜单】旷视、商汤、寒武纪等7家中国公司入选
- 【IT笔试面试题整理】二叉树中和为某一值的路径--所有可能路径
- 【IT笔试面试题整理】字符串的排列
- 【IT笔试面试题整理】字符串的组合
- TCP/IP协议三次握手和四次挥手大白话解说
- 【IT笔试面试题整理】寻找二叉树两节点的最近的公共祖先
- 20171215Capstone培训班
- 【IT笔试面试题整理】反转链表
- 【IT笔试面试题整理】字符串转数组+数组转字符串
- 【IT笔试面试题整理】判断链表是否存在环路,并找出回路起点