自己写的方法

按之字形顺序打印二叉树

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

如题,用个flag标志切换方向

public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> result = new ArrayList<>();
        if (pRoot == null) {
            return result;
        }
        boolean flag = true;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(pRoot);
        int count = 0;
        while (!queue.isEmpty()) {
            count = queue.size();
            ArrayList<Integer> list = new ArrayList<>();
            ArrayList<TreeNode> tmpList = new ArrayList<>();
            while (count > 0) {
                TreeNode node = queue.poll();
                list.add(node.val);
                tmpList.add(node);
                count--;
                if(count<=0){
                    if(flag){
                        flag = false;
                        if(tmpList.size()>0){
                            for(int i=tmpList.size()-1;i>=0;i--){
                                TreeNode node1 = tmpList.get(i);
                                if(node1.right!=null){
                                    queue.offer(node1.right);
                                }
                                if(node1.left!=null){
                                    queue.offer(node1.left);
                                }
                            }
                        }
                    }else{
                        if(tmpList.size()>0){
                            for(int i=tmpList.size()-1;i>=0;i--){
                                TreeNode node2 = tmpList.get(i);
                                if(node2.left!=null){
                                    queue.offer(node2.left);
                                }
                                if(node2.right!=null){
                                    queue.offer(node2.right);
                                }
                            }
                        }
                        flag = true;
                    }
                }
            }
            result.add(list);
        }
        return result;
    }
全部评论

相关推荐

07-15 16:52
已编辑
门头沟学院 Java
周五投的,流程今天结束
投递地平线等公司7个岗位
点赞 评论 收藏
分享
07-16 17:55
门头沟学院 Java
点赞 评论 收藏
分享
Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
北漂的牛马人:211佬,包进的,可能是系统问题
点赞 评论 收藏
分享
07-13 14:45
南华大学 Java
北斗导航Compas...:英文和中文之间加个空格,有的句子有句号 有的没。其他没啥问题
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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