给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
我的解法:
在前序遍历的基础上,增加一个深度参数,结果用集合保存,保存位置为相应的深度索引
/** public class TreeNode {* int val = 0;* TreeNode left = null;* TreeNode right = null;* public TreeNode(int val) {* this.val = val;* }* }*/
ArrayList<ArrayList<Integer>> lists=new ArrayList<>();public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {// write code herea(root,0);return lists;}public void a(TreeNode root,int deepNum){if(root==null)return;ArrayList<Integer> list;//看看是否已经遍历过一些了,如果没有就新建,有了则往后面加,之后再重新插入到lists对应位置,通过add或setif(lists.size()<deepNum+1){list= new ArrayList<>();list.add(root.val);lists.add(list);} else{list= lists.get(deepNum);list.add(root.val);lists.set(deepNum,list);}a(root.left,deepNum+1);a(root.right,deepNum+1);}