题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
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反转偶数的层级