剑指offer21--二叉树路径之和为整数
来源:互联网 发布:430单片机视频教程 编辑:程序博客网 时间:2024/06/17 02:40
题目:输入一棵二叉树和一个整数, 打印出二叉树中结点值的和为输入整数的所有路径。
递归是参数的递归
从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
原来根据大神的思路以为要使用栈,其实不是,是使用的类似于栈的数组List,当使用到递归的时候就需要考虑到递归传递的参数是那几个,只有这样才可以实现正常的递归操作。
package 剑指offer;/*题目:输入一棵二叉树和一个整数, 打印出二叉树中结点值的和为输入整数的所有路径。 * 从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。*/import java.util.*;public class Test25 {public static class BinaryTree2Node { int value; BinaryTree2Node left; BinaryTree2Node right;}public static void findPath(BinaryTree2Node node, int expectNum){List<Integer> list = new ArrayList<>();if(node != null){findPath(node, 0, expectNum, list);}}// 思考为什么要递归四个参数,少一个行不行public static void findPath(BinaryTree2Node root, int curNum, int expectNum, List<Integer> result){if(root != null){curNum += root.value;result.add(root.value);if(curNum < expectNum){// 递归左子树和右子树findPath(root.left, curNum, expectNum, result);findPath(root.right, curNum, expectNum, result);}else if(curNum == expectNum){ if (root.left == null && root.right == null) { System.out.println(result); }}result.remove(result.size() - 1);}} public static void main(String[] args) { // 10 // / \ // 5 12 // /\ // 4 7 BinaryTree2Node root = new BinaryTree2Node(); root.value = 10; root.left = new BinaryTree2Node(); root.left.value = 5; root.left.left = new BinaryTree2Node(); root.left.left.value = 4; root.left.right = new BinaryTree2Node(); root.left.right.value = 7; root.right = new BinaryTree2Node(); root.right.value = 12; // 有两条路径上的结点和为22 System.out.println("findPath(root, 22);"); findPath(root, 22); // 没有路径上的结点和为15 System.out.println("findPath(root, 15);"); findPath(root, 15); // 有一条路径上的结点和为19 System.out.println("findPath(root, 19);"); findPath(root, 19); }}
递归是参数的递归
1 0
- 剑指offer21--二叉树路径之和为整数
- 二叉树(五)二叉树中某一路径之和为某一整数
- 剑指offer21从上到下打印二叉树
- 二叉树最大路径之和
- 输出二叉树和为特定整数的所有路径
- 剑指offer 编程题(23):二叉树路径之和
- 剑指offer_输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径(剑指offer)
- 二叉树中路径和为某整数的所有路径
- 二叉树中路径和为某整数的所有路径 lint code by python
- 《剑指Offer》面试题:打印出二叉树中结点值的和为输入整数的所有路径
- 连续整数之和为n
- 求二叉树中结点值的和为指定整数的所有路径
- 打印出二叉树中结点值的和为输入整数的所有路径
- [LintCode] 二叉树的路径之和 Binary Tree Path Sum
- 【面试题】剑指offer21
- java实现输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径
- 【剑指offer]输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 事实证明,OpenCV中对RGB图像数据的存储顺序是BGR,而且Scalar()的顺序也是B,G,R
- Android 百分比、水波、流量剩余进度球的实现
- Rails 3 与 Rails 4 中 try 方法的不同
- [Android] EditText默认不弹出软键盘的方法
- maven相关
- 剑指offer21--二叉树路径之和为整数
- php通过xpath解析xml数据
- Linux几种网络连接模式
- 使用freemarker(FTL)常见语法 总结
- UEFI BIOS模式下Windows系统启动过程以及引导文件修复方法
- struts2入门
- GlassFish4安装部署
- leetcode-27-Remove Element
- LCP014 LeetCode 14. Longest Common Prefix