1. 程式人生 > >劍指offer -- 把二叉樹列印成多行

劍指offer -- 把二叉樹列印成多行

題目描述

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

AC程式碼

層次遍歷二叉樹用到的資料結構是佇列。

import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;

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

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

    }

}
*/
public class Solution { Queue<TreeNode> queue = new LinkedList<>(); ArrayList<ArrayList<Integer>> resList = new ArrayList<ArrayList<Integer>>(); int curNode = 1;//當前層具有的結點數目 int nextNode = 0;//下一層具有的結點數目 ArrayList<ArrayList<Integer> > Print
(TreeNode pRoot) { if(pRoot == null) return resList; queue.offer(pRoot); TreeNode tmp = null; ArrayList<Integer> curList = new ArrayList<Integer>(); while(!queue.isEmpty()){ tmp = queue.poll(); curList.add(tmp.val); curNode--
; if(tmp.left != null) { queue.offer(tmp.left); nextNode++; } if(tmp.right != null) { queue.offer(tmp.right); nextNode++; } if(curNode == 0){ resList.add(curList); curList = new ArrayList(); curNode = nextNode; nextNode = 0; } } return resList; } }