题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

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反转偶数的层级
全部评论

相关推荐

一表renzha:不是你说是南通我都没往那方面想,人家真是想表达那个意思吗?
点赞 评论 收藏
分享
06-04 19:53
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务