剑指offer60 把二叉树打印成多行


剑指offer60

把二叉树打印成多行

题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

思路

思路同59,利用两个队列实现

代码

import java.util.ArrayList;


/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
import java.util.*;
public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        int layer = 1;
        Queue<TreeNode> queue1 = new LinkedList<>();
        Queue<TreeNode> queue2 = new LinkedList<>();
        queue1.offer(pRoot);

        ArrayList<ArrayList<Integer> > res = new ArrayList<ArrayList<Integer> >();
        while(!queue1.isEmpty() || !queue2.isEmpty()){
            ArrayList<Integer> temp = new ArrayList<Integer>();
            if(layer%2!=0){
                while(!queue1.isEmpty()){
                TreeNode node = queue1.poll();
                    if(node!=null){
                        temp.add(node.val);
                        queue2.offer(node.left);
                        queue2.offer(node.right);
                    }
                }
            }else{
                while(!queue2.isEmpty()){
                TreeNode node = queue2.poll();
                    if(node!=null){
                        temp.add(node.val);
                        queue1.offer(node.left);
                        queue1.offer(node.right);
                    }
                }
            }
            if(!temp.isEmpty()){
                res.add(temp);
                layer++;
            }
        }
        return res;
    }
}
/*
思路同59,利用两个队列实现
*/

文章作者: Hailong Gao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hailong Gao !
评论
  目录