当前位置: 首页 > news >正文

Leetcode-每日一题【剑指 Offer 32 - I. 从上到下打印二叉树】

题目

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回:

[3,9,20,15,7]

提示:

  1. 节点总数 <= 1000

解题思路

1.题目要求我们从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。也就是按照二叉树的层序遍历打印二叉树。

2.我们只需要一个队列即可实现,首先我们判断树是否为空,若为空则返回一个没有元素的数组。然后我们建立一个队列来执行打印操作,再建立一个可变数组来存放遍历后的元素,因为我们不确定所给树的元素的个数,所以需要一个可变数组。

3.下面我们开始遍历,首先我们将根节点入队。然后进入一个while()循环,若队列不为空则将让队列进行出队操作,然后将刚出队的元素保存在可变数组中,再判断此元素是否有左右孩子,若存在左右孩子就将左右孩子入队。之后再次判断队列是否为空。循环往复,直到队列为空,就代表整棵树已经遍历完了。

4.最后我们需要将可变数组中的元素存入一个数组并且返回即可。

举个例子:

先让三入队

 queue 不为空,让 3 出队,并且让 3 的左右孩子入队。

 queue 不为空让 9 出队,因为 9 没有左右孩子,所以不进行入队操作

 queue 不为空 让 20 出队,并且让 20 的左右孩子入队。

 queue 不为空让 15 出栈,15 没有左右孩子  ,所以不进行入队操作

  queue 不为空让 7 出栈,7 没有左右孩子  ,所以不进行入队操作

 

 queue 为空,打印结束。

代码实现

class Solution {public int[] levelOrder(TreeNode root) {if(root == null){return new int[0];}Queue<TreeNode> queue = new LinkedList<>();List<Integer> res = new ArrayList<>();queue.add(root);while(!queue.isEmpty()){TreeNode cur = queue.poll();res.add(cur.val);if(cur.left != null) queue.add(cur.left);if(cur.right != null) queue.add(cur.right);}int[] num = new int[res.size()];for(int i = 0; i < res.size(); i++){num[i] = res.get(i);}return num;}
}

测试结果

 

http://www.lryc.cn/news/127823.html

相关文章:

  • 网神 SecGate 3600 防火墙任意文件上传漏洞复现
  • 把独显塞回CPU,新核显能够媲美RTX 30、40系显卡了
  • Python爬虫——scrapy_工作原理
  • gRPC vs REST:创建API的方法比较
  • 缓存平均的两种算法
  • SpringBoot的配置文件(properties与yml)
  • 如何应用项目管理软件进行敏捷开发管理
  • ARM DIY 硬件调试
  • DataFrame.rename()函数--Pandas
  • 09- DMA(DirectMemoryAccess直接存储器访问)
  • 责任链模式
  • 【BI看板】Docker-compose安装Superset,安装最新版本2.1.0
  • VS2019生成的DLL,给QT(MinGW版本)使用的小结
  • c++--SLT六大组件之间的关系
  • 解析个人信息保护影响评估
  • 2.阿里云对象存储OSS
  • (三)Unity开发Vision Pro——入门
  • 召集令:CloudQuery 社区有奖征文活动来啦!
  • 【傅里叶级数与傅里叶变换】数学推导——1、基础知识点回顾及[Part1:三角函数的正交性]介绍
  • BUUCTF [MRCTF2020]Ezpop解题思路
  • 【IMX6ULL驱动开发学习】07.驱动程序分离的思想之平台总线设备驱动模型和设备树
  • 深度学习中的python语法笔记总结
  • Reids 的整合使用
  • Vue3 —— watchEffect 高级侦听器
  • Java异步子线程读取主线程参数的若干好玩场景
  • Android 视频开发
  • 【计算机网络篇】UDP协议
  • LeetCode 2682. 找出转圈游戏输家
  • 数据结构单链表
  • 自定义WEB框架结合Jenkins实现全自动测试