把二叉樹打印成多行

使用隊列來進行層次遍歷。java

不須要使用兩個隊列分別存儲當前層的節點和下一層的節點,由於在開始遍歷一層的節點時,當前隊列中的節點數就是當前層的節點數,只要控制遍歷這麼多節點數,就能保證此次遍歷的都是當前層的節點。node

ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
    ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
    Queue<TreeNode> queue = new LinkedList<>();
    queue.add(pRoot);
    while (!queue.isEmpty()) {
        ArrayList<Integer> list = new ArrayList<>();
        int cnt = queue.size();
        while (cnt-- > 0) {
            TreeNode node = queue.poll();
            if (node == null)
                continue;
            list.add(node.val);
            queue.add(node.left);
            queue.add(node.right);
        }
        if (list.size() != 0)
            ret.add(list);
    }
    return ret;
}
相關文章
相關標籤/搜索