当前位置:网站首页>#yyds干货盘点# 解决剑指offer:把二叉树打印成多行

#yyds干货盘点# 解决剑指offer:把二叉树打印成多行

2022-06-22 21:35:00 51CTO

1.简述:

描述

给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出,每一层输出一行,将输出的结果存放到一个二维数组中返回。例如:

给定的二叉树是{1,2,3,#,#,4,5}

#yyds干货盘点# 解决剑指offer:把二叉树打印成多行_二叉树

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

数据范围:二叉树的节点数 #yyds干货盘点# 解决剑指offer:把二叉树打印成多行_数据_02#yyds干货盘点# 解决剑指offer:把二叉树打印成多行_数据_03要求:空间复杂度 #yyds干货盘点# 解决剑指offer:把二叉树打印成多行_数据_04,时间复杂度 #yyds干货盘点# 解决剑指offer:把二叉树打印成多行_数据_04

输入描述:

给定一个二叉树的根节点

示例1

输入:

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

返回值:

      
      
[[1],[2,3],[4,5]]
  • 1.

示例2

输入:

      
      
{8,6,10,5,7,9,11}
  • 1.

返回值:

      
      
[[8],[6,10],[5,7,9,11]]
  • 1.

示例3

输入:

      
      
{1,2,3,4,5}
  • 1.

返回值:

      
      
[[1],[2,3],[4,5]]
  • 1.

示例4

输入:

      
      
{}
  • 1.

返回值:

      
      
[]
  • 1.

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;
}

}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
原网站

版权声明
本文为[51CTO]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15488507/5408875