1. 程式人生 > >把二叉樹列印成多行java實現

把二叉樹列印成多行java實現

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

思路:定義一個佇列,遍歷二叉樹,並將結點入佇列,每入一層處理一層,保證一層一層地放入陣列中。

import java.util.ArrayList;
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) { ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> tmp = new ArrayList<Integer>(); LinkedList<TreeNode> q = new
LinkedList<TreeNode>(); if(pRoot == null) return ret; q.add(pRoot); int now = 1, next = 0; while(!q.isEmpty()) { TreeNode t = q.remove(); now--; tmp.add(t.val); if(t.left != null) { q.add(t.left
); next++; } if(t.right != null) { q.add(t.right); next++; } if(now == 0) { ret.add(new ArrayList<Integer>(tmp)); tmp.clear(); now = next; next = 0; } } return ret; } }