《剑指offer》JZ60把二叉树打印成多行

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

解析:

二叉树的遍历;每一行存为一个集合,然后存到大集合中

 

代码:

import java.util.*;


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

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

    }

}
*/
public class Solution {
    
   ArrayList > Print(TreeNode pRoot) {
        ArrayList> res = new ArrayList<>();
        if(pRoot == null){
            return res;
        }
        LinkedList queue = new LinkedList<>();
        queue.add(pRoot);
        
        ArrayList list = new ArrayList<>();
        list.add(pRoot.val);  //.val是取值;转int
        res.add(list);  //先将root存档
        
        TreeNode cur;
        while(!queue.isEmpty()){
            int count = queue.size();
            list = new ArrayList<>(); //用来存储每行的root
            while(count > 0){
                cur = queue.pop();
                if(cur.left != null){
                    list.add(cur.left.val);
                    queue.add(cur.left);
                }
                if(cur.right != null){
                    list.add(cur.right.val);
                    queue.add(cur.right);
                }
                count--;
            }
            if(list.size() != 0){
                res.add(list);
            }
        }
        return res;
    }
}

 

你可能感兴趣的:(剑指offer)