首页 > 试题广场 >

把二叉树打印成多行

[编程题]把二叉树打印成多行
  • 热度指数:352120 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出,每一层输出一行,将输出的结果存放到一个二维数组中返回。
例如:
给定的二叉树是{1,2,3,#,#,4,5}

该二叉树多行打印层序遍历的结果是
[
[1],
[2,3],
[4,5]
]

数据范围:二叉树的节点数
要求:空间复杂度 ,时间复杂度

输入描述:
给定一个二叉树的根节点

示例1

输入

{1,2,3,#,#,4,5}

输出

[[1],[2,3],[4,5]]
示例2

输入

{8,6,10,5,7,9,11}

输出

[[8],[6,10],[5,7,9,11]]
示例3

输入

{1,2,3,4,5}

输出

[[1],[2,3],[4,5]]
示例4

输入

{}

输出

[]

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
头像 牛客题解官
发表于 2020-06-01 16:44:55
精华题解 题目主要信息: 将一棵n个节点的二叉树按照从上到下按层的方式打印,每层按照从左到右的顺序输出。 举一反三: 学习完本题的思路你可以解决如下题目: JZ77. 按之字形顺序打印二叉树 JZ32. 从上往下打印二叉树 方法一:非递归层次遍历(推荐使用) 知识点:队列 队列是一种仅支持在表尾进行插入操作、 展开全文
头像 牛客786963925号
发表于 2021-07-08 18:30:04
精华题解 解法一:递归 递归方法通过定义递归函数helper,遍历树的每一层,并将结果放入结果数组res的相应位置,因此需要定义level变量以记录当前访问到的层数。在完成对某一凑层的遍历时,按照相同方式递归地访问左孩子和右孩子,且层数加1。 实现代码如下: /* struct TreeNode { 展开全文
头像 江南好___
发表于 2021-07-14 19:56:32
精华题解 描述 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 示例 输入:{8,6,10,5,7,9,11} 返回值:[[8],[6,10],[5,7,9,11]]知识点:二叉树,BFS难度:⭐⭐⭐ 题解 解题思路 既然是最终结果是按层打印,分别收集每一层的结点的值,最容易想到 展开全文
头像 牛客972033963
发表于 2019-10-01 16:29:41
这里我们需要用到一个数据结构,那就是队列。 核心思想:每次出队一个元素,就将该元素的孩子节点加入队列中,直至队列中元素个数为0时,出队的顺序就是该二叉树的层次遍历结果。 初始状态下,队列中只保留根节点的元素: 当A出队时,将A的孩子节点加入队列中: 重复上面的动作,队首元素出队时,将孩子节点加 展开全文
头像 不刷题就会白给
发表于 2020-03-03 21:35:40
思路:做这题前先看看从上往下打印二叉树 import java.util.*; public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { Arr 展开全文
头像 叫我皮卡丘
发表于 2019-08-14 09:49:13
【剑指offer】把二叉树打印成多行 --Java实现 题解 层序遍历大家应该都不陌生,这道题最关键的点在于如何保存层数信息,用变量 deep 存储层数信息,子树的 deep+1,该 deep 可以作为 Lists 的索引: 当 deep >= lists 的大小,说明该层还未被存入过 li 展开全文
头像 一叶浮尘
发表于 2020-03-02 15:29:18
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 想当初自己在这种题目上栽了一个跟头,本应该是使用arraylist存储每一行节点,但是其实用queue存储之后整个程序的判断逻辑就清楚很多,因此数据结构活学活用,就非常好了。 import java.util.ArrayList; 展开全文
头像 ccจุ๊บ
发表于 2020-02-18 21:25:07
思路:用两个列表分别保存当前层节点和下一层节点,结果.append([i.val for i in 当前层节点]),然后 当前层列表,下一层列表 = 下一层列表, [] 即可,直到当前层为空 class Solution: def Print(self, pRoot): # 展开全文
头像 头都大了
发表于 2020-02-06 20:58:27
import java.util.ArrayList; import java.util.Queue; import java.util.LinkedList; /* public class TreeNode { int val = 0; TreeNode left = nul 展开全文
头像 xiongqiangcs
发表于 2020-04-20 23:54:31
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(N 展开全文
头像 Ironxin
发表于 2020-03-24 17:14:04
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 刚开始想法是用的print,然后看到题目给的是ArrayList<ArrayList<Integer> >还有点小懵逼。其实是让你返回一个ArrayList,其中每个元素都是一个装了整型数据的Arra 展开全文
头像 aidisen
发表于 2020-03-16 16:29:12
思路很简单,一切尽在代码中,我自己认为的精华就是代码中count这一行 ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> 展开全文
头像 无名者
发表于 2020-03-16 01:33:38
这个题解方法应该没人写吧,代码多,但容易理解,双队列 import java.util.ArrayList; import java.util.Queue; import java.util.LinkedList; /* public class TreeNode { int val = 展开全文