题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
import java.util.*; import java.util.ArrayList; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { void LevelOderPrint(ArrayList<ArrayList<Integer>> list ,int level,TreeNode current){ if(current!=null){ if(list.size()-1<level){ list.add(new ArrayList<Integer>(){}); } list.get(level).add(current.val); LevelOderPrint(list,level+1,current.left); LevelOderPrint(list,level+1,current.right); } } public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); LevelOderPrint(temp,0,pRoot); for(int i=0;i<res.size();i++){ if((i+1)%2==0){ Collections.reverse(res.get(i)); } } return res; } }
观察题目可以发现,奇数层是从左向右输出,偶数层是从右往左输出 。也就是说输出和层数有关系,所以我们可以利用层级的方式解决
我们可以按照二叉树的层级遍历的方法,先把每层的结果放在容器当中,这个容器相当于一个二维数组。
将结果存放完毕以后 利用Collentions反转偶数的层级