二叉树中所有的路径(从根节点到叶子结点)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树中所有的路径(从根节点到叶子结点)相关的知识,希望对你有一定的参考价值。
1 import java.util.ArrayList; 2 3 /** 4 * 寻找最短的二叉搜索的路径,从根节点到叶子结点 5 * 6 * @author jinfeng 7 * 8 */ 9 public class FindShortestBTPath { 10 11 // 用来记录所有的路径 12 private ArrayList<ArrayList<Integer>> allPaths = new ArrayList<ArrayList<Integer>>(); 13 // 用来记录一条路径 14 private ArrayList<Integer> onePath = new ArrayList<Integer>(); 15 16 // 返回所有的路径 17 public ArrayList<ArrayList<Integer>> FindAllPath(TreeNode root) { 18 if(root == null) 19 return allPaths; 20 21 // 把当前结点加入到路径当中来 22 onePath.add(root.val); 23 24 // 如果为叶子结点,则把onePath加入到allPaths当中 25 if(root.left == null && root.right == null){ 26 allPaths.add(new ArrayList<Integer>(onePath)); 27 } 28 29 FindAllPath(root.left); 30 FindAllPath(root.right); 31 32 // 这个地方可以通过画递归树来理解,无论叶子结点是左结点还是右结点,都会经过下面这一步,而且至关重要 33 onePath.remove(onePath.size() - 1); 34 return allPaths; 35 } 36 37 public static void main(String[] args) { 38 39 } 40 41 } 42 43 class TreeNode { 44 int val = 0; 45 TreeNode left = null; 46 TreeNode right = null; 47 48 public TreeNode(int val) { 49 this.val = val; 50 51 } 52 53 }
以上是关于二叉树中所有的路径(从根节点到叶子结点)的主要内容,如果未能解决你的问题,请参考以下文章