按字形顺序打印二叉树

按之字形顺序打印二叉树

http://www.nowcoder.com/questionTerminal/91b69814117f4e8097390d107d2efbe0

public class Solution {


    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer> > res = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        //使用标记 是从左往右还是 从右往左
        boolean flag = true;
        if(pRoot != null)
            queue.offer(pRoot);
        int size = 0;
        while(!queue.isEmpty()){
            ArrayList<Integer> temp = new ArrayList<>();
            size = queue.size();
            for(int i = 0; i < size; i++){
                TreeNode tmp = queue.poll();
                if(tmp == null) continue;
                if(flag){
                    //尾插入法
                    temp.add(tmp.val);
                }else{
                    //头插入法
                    temp.add(0, tmp.val);
                }

                if(tmp.left != null)
                    queue.offer(tmp.left);
                if(tmp.right != null)
                    queue.offer(tmp.right);
            }
            if(temp.size() != 0){
                res.add(new ArrayList<Integer>(temp));
            }
            flag =! flag;

        }
        return res;
    }

}
全部评论

相关推荐

昨天 14:22
门头沟学院 Java
大厂 测开 24*16离家近的事业编(大概只有大厂的1/4) 硕士
点赞 评论 收藏
分享
粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务