【劍指offer】60. 把二叉樹打印成多行

問題描述

從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。

思路

比上題還簡單,用層序遍歷即可。

方法一

public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        if(pRoot == null) return res;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(pRoot);
        while(!queue.isEmpty()){
            ArrayList<Integer> tmp = new ArrayList<>();
            Queue<TreeNode> next = new LinkedList<>();
            while(!queue.isEmpty()){
                tmp.add(queue.peek().val);
                if(queue.peek().left != null) next.add(queue.peek().left);
                if(queue.peek().right != null) next.add(queue.peek().right);
                queue.poll();
            }
            res.add(tmp);
            queue = next;
        }
        return res;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章