#yyds干货盘点# 解决剑指offer:把二叉树打印成多行
Posted 97的风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 解决剑指offer:把二叉树打印成多行相关的知识,希望对你有一定的参考价值。
1.简述:
描述
给定一个节点数为 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
输入:
返回值:
[]
2.代码实现:
import java.util.*;
public class Solution
//层次遍历
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot)
TreeNode head = pRoot;
ArrayList<ArrayList<Integer> > res = new ArrayList<ArrayList<Integer> >();
if(head == null)
//如果是空,则直接返回空数组
return res;
//队列存储,进行层次遍历
Queue<TreeNode> temp = new LinkedList<TreeNode>();
temp.offer(head);
TreeNode p;
while(!temp.isEmpty())
//记录二叉树的某一行
ArrayList<Integer> row = new ArrayList<Integer>();
int n = temp.size();
//因先进入的是根节点,故每层节点多少,队列大小就是多少
for(int i = 0; i < n; i++)
p = temp.poll();
row.add(p.val);
//若是左右孩子存在,则存入左右孩子作为下一个层次
if(p.left != null)
temp.offer(p.left);
if(p.right != null)
temp.offer(p.right);
res.add(row);
return res;
以上是关于#yyds干货盘点# 解决剑指offer:把二叉树打印成多行的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点# 解决剑指offer: 判断是不是平衡二叉树
#yyds干货盘点# 解决剑指offer:二叉树中和为某一值的路径