剑指offer六十之按之把二叉树打印成多行

Posted AI菌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer六十之按之把二叉树打印成多行相关的知识,希望对你有一定的参考价值。

一、题目

  从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
二、思路

       队列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六十之按之把二叉树打印成多行的主要内容,如果未能解决你的问题,请参考以下文章

剑指OFFER 按之字形顺序打印二叉树

剑指offer(五十三)之按之字形顺序打印二叉树

剑指OFFER 把二叉树打印成多行

剑指Offer——把二叉树打印成多行

剑指offer---把二叉树打印成多行

《剑指offer》:[60]把二叉树打印成多行