17.把二叉树打印成多行/层次遍历

478 阅读1分钟
import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
public class Solution {
    ArrayList<ArrayList<Integer>> list = new ArrayList();
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        if(pRoot == null){
            return list;
        }
        Queue<TreeNode> queue = new LinkedList();
        //根节点入队列
        queue.offer(pRoot);
        //当队列不是空
        while(!queue.isEmpty()){
            //放里面,记录当前节点个数
            int size  = queue.size();
            ArrayList<Integer> temp = new ArrayList();
            //遍历一次是一层
            for(int i=0;i<size;i++){
               TreeNode node = queue.poll();
               if(node.left!=null){
                   queue.offer(node.left);
               }
                if(node.right!=null){
                    queue.offer(node.right);
                }
                temp.add(node.val);
            }
            list.add(temp);
            
        }
        return list;
    }
    
}