题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
用一个helper方法进行DFS,每进去一层检查有没有这一层,没有就加多一层,然后将存在的点的值加到特定层中。
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList<ArrayList<>> */ public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) { // write code here return levelOrderHelper(root,new ArrayList<ArrayList<Integer>>(),0); } public ArrayList<ArrayList<Integer>> levelOrderHelper(TreeNode root,ArrayList<ArrayList<Integer>> arr, int n){ if(root != null){ if(arr.size()<n+1){ arr.add(new ArrayList<Integer>()); } arr.get(n).add(root.val); levelOrderHelper(root.left,arr,n+1); levelOrderHelper(root.right,arr,n+1); } return arr; } }