剑指offer题23
来源:互联网 发布:结婚纪念日 礼物 知乎 编辑:程序博客网 时间:2024/05/17 21:56
package jianzhioffer;import java.util.ArrayList;import java.util.Scanner;/** * 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 * 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 * *//**节点类public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution23 {//运用递归,从根节点逐次向下遍历,当到达叶子结点且正好target为0时,加入队列;如果//如果节点值大于target,则没必要往下遍历,提前结束static ArrayList<ArrayList<Integer>> alllist = new ArrayList<ArrayList<Integer>>();static ArrayList<Integer> list = new ArrayList<Integer>();public static ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {if(root == null){return alllist;}list.add(root.val);target -= root.val;if(target == 0&& root.left == null && root.right == null){alllist.add(new ArrayList<Integer>(list));}FindPath(root.left,target);FindPath(root.right,target);list.remove(list.size()-1);return alllist; }/*public static ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {ArrayList<ArrayList<Integer>> alllist = new ArrayList<>();ArrayList<Integer> list = new ArrayList<>();if(root == null){return alllist;}return find(root,target,alllist,list);}private static ArrayList<ArrayList<Integer>> find(TreeNode root,int target, ArrayList<ArrayList<Integer>> alllist,ArrayList<Integer> list) {if(root == null || root.val >target){if(target == 0 && root == null){alllist.add(list);}return alllist;}list.add(root.val);ArrayList<Integer> left_list = new ArrayList<>();left_list.addAll(list);ArrayList<Integer> right_list = new ArrayList<>();right_list.addAll(list);if(root.left == null && root.right == null){find(root.left,target-root.val,alllist,left_list);}else{find(root.left,target-root.val,alllist,left_list);find(root.right,target-root.val,alllist,right_list);}return alllist;}*/public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt(); int target = sc.nextInt(); int[] arr = new int[n];for(int i = 0;i<n;i++){arr[i] = sc.nextInt();}TreeNode tree1 = new TreeNode(arr[0]);TreeNode tree2 = new TreeNode(arr[1]);TreeNode tree3 = new TreeNode(arr[2]);TreeNode tree4 = new TreeNode(arr[3]);TreeNode tree5 = new TreeNode(arr[4]);TreeNode tree6 = new TreeNode(arr[5]);TreeNode tree7 = new TreeNode(arr[6]);tree1.left = tree2; tree1.right = tree3; tree2.left = tree4; tree2.right = tree5; tree3.left = tree6; tree3.right = tree7; ArrayList<ArrayList<Integer>> alllist = FindPath(tree1,target); for(ArrayList<Integer> list : alllist){ System.out.println(list.toString()); }}}
阅读全文
0 0
- 剑指offer题23
- 剑指offer:用递归写23题
- 剑指Offer-23
- 剑指offer第一题
- 剑指offer-题
- 剑指offer第一题
- 剑指Offer第一题
- 剑指offer(题三)
- 剑指offer第二题
- 剑指offer第三题
- 剑指offer第四题
- 剑指offer第五题
- 剑指offer题一
- 剑指offer题二
- 剑指offer题七
- 剑指offer题六
- 【剑指offer】第二题
- 【剑指offer】第三题
- React componentWillUnmount 替换 this.IsMounted()
- python socket,socketserver
- C#序列化
- when can we meet POJ-2028
- css隐藏滚动条,兼容ie和chrome
- 剑指offer题23
- ubuntu系统下codeblocks安装
- TCP连接的三次握手和Socket建立网络连接的步骤
- mybatis系列3
- 删除的数据被恢复!原来是因为这个啊
- 网页JavaScript特效之flappy bird(像素鸟)
- cocoapods的优点、安装及使用
- Python实现经典内部排序算法(归并排序)
- 汇编基础(一)