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

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

題目

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

程式碼

此處只需要一個佇列進行層序遍歷即可。

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<ArrayList<Integer>
> Print(TreeNode pRoot) { if(pRoot==null){ return new ArrayList<ArrayList<Integer>>(); } LinkedList<TreeNode> queue = new LinkedList<TreeNode>(); ArrayList<ArrayList<Integer>> list= new ArrayList<ArrayList<Integer>
>(); queue.add(pRoot); while(!queue.isEmpty()){ //注意此處的size就是當前層有多少節點,即上一層add進去的節點數 int len = queue.size(); ArrayList<Integer> templist = new ArrayList<Integer>(len); for(int i=0;i<len;i++){ TreeNode node = queue.
removeFirst(); templist.add(node.val); if(node.left!=null){ queue.addLast(node.left); } if(node.right!=null){ queue.addLast(node.right); } } list.add(templist); } return list; } }