本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
这是qklbishe.com第6529 篇笔试面试资料
提供答案分析,通过本文《输入一颗二叉树的 根 节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过结点形成一条路径。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过结点形成一条路径。
使用深度优先搜索,凑出一个target就加入一条路径
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @param target int整型 * @return int整型ArrayList<ArrayList<>> */ public ArrayList<ArrayList<Integer>> FindPath (TreeNode root, int target) { // write code here ArrayList<ArrayList<Integer>> paths = new ArrayList<>(); if(root == null){ return paths; }else if(root.left == null && root.right == null && root.val == target){ ArrayList<Integer> path = new ArrayList<>(); path.add(root.val); paths.add(path); return paths; }else{ ArrayList<ArrayList<Integer>> left = FindPath(root.left, target - root.val); ArrayList<ArrayList<Integer>> right = FindPath(root.right, target - root.val); left.addAll(right); for(int i = 0; i < left.size(); i++){ ArrayList<Integer> path = new ArrayList<>(); path.add(root.val); path.addAll(left.get(i)); paths.add(path); } return paths; } } }
今天 10:33:19 回复(0)
文章部分来自互联网,侵权联系删除
www.qklbishe.com