按之字形顺序打印二叉树

按之字形顺序打印二叉树

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

public class Solution {
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer> > result = new ArrayList<>();
        if (pRoot == null) {
            return result;
        }
        // 开辟一个双端队列,方便后面操作
        Deque<TreeNode>queue = new LinkedList<>();
        // odd为true是奇数行
        boolean odd = true;

        queue.addFirst(pRoot);
        while (!queue.isEmpty()) {
            ArrayList<Integer> array = new ArrayList<>();
            int size = queue.size();
            // 单数行
            if (odd) {
                for (int i=0; i<size; ++i) {
                    // 从队列开头取结点
                    TreeNode node = queue.pollFirst();
                    array.add(node.val);
                    // 下一行是从右往左
                    // 所以左结点先addLast,最终会在队列开头
                    if (node.left != null) {
                        queue.addLast(node.left);
                    }
                    if (node.right != null) {
                        queue.addLast(node.right);
                    }                    
                }
            } else {
            // 双数行
                for (int i=0; i<size; ++i) {
                    // 从队列末尾取结点
                    TreeNode node = queue.pollLast();
                    array.add(node.val);
                    // 下一行是从左往右
                    // 所以右结点先addFirst,最终会在队列末尾
                    if (node.right != null) {
                        queue.addFirst(node.right);
                    }
                    if (node.left != null) {
                        queue.addFirst(node.left);
                    }                  
                }
            }
            result.add(array);
            // 下一行反过来
            odd = !odd;
        }
        return result;
    }
全部评论

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务