1. 程式人生 > >劍指offer六十之按之把二叉樹打印成多行

劍指offer六十之按之把二叉樹打印成多行

rac ger pty interview https 技術 記錄 ide clas

一、題目

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

隊列LinkedList完成層序遍歷,用end記錄每層結點數目

三、代碼

技術分享
import java.util.ArrayList;
import java.util.LinkedList;

/*
* 隊列LinkedList完成層序遍歷,用end記錄每層結點數目
*/
public class Solution {
    ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        //保存結果
        ArrayList<ArrayList<Integer>> result = new
ArrayList<>(); //預檢驗 if (pRoot == null) { return result; } LinkedList<TreeNode> layer = new LinkedList<>(); ArrayList<Integer> layerList = new ArrayList<>(); layer.add(pRoot); int start = 0, end = 1;
while (!layer.isEmpty()) { TreeNode cur = layer.remove(); layerList.add(cur.val); start++; if (cur.left != null) { layer.add(cur.left); } if (cur.right != null) { layer.add(cur.right); }
if (start == end) { end = layer.size(); start = 0; result.add(layerList); layerList = new ArrayList<>(); } } return result; } }
View Code

---------------------------------------------

參考鏈接:

https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

劍指offer六十之按之把二叉樹打印成多行