劍指offer六十之按之把二叉樹打印成多行
阿新 • • 發佈:2017-10-23
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 = newView CodeArrayList<>(); //預檢驗 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; } }
---------------------------------------------
參考鏈接:
https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
劍指offer六十之按之把二叉樹打印成多行