坚持刷题 | 二叉树的层序遍历

坚持刷题,老年痴呆追不上我,今天刷:二叉树的层序遍历

题目

102二叉树的层序遍历
在这里插入图片描述

考察点

  • 数据结构基础: 能够正确地使用二叉树数据结构,并了解二叉树的基本性质。
  • 编程基础: 能够熟练使用Java编程语言,实现基本的数据结构和算法。
  • 树的遍历算法: 理解并能够正确实现二叉树的层序遍历算法。层序遍历是一种广度优先搜索(BFS)的应用,通常使用队列来实现。

代码实现

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val = val;}
}public class BinaryTreeLevelOrderTraversal {public static List<List<Integer>> levelOrderTraversal(TreeNode root) {List<List<Integer>> result = new ArrayList<>();if (root == null) {return result;}Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int levelSize = queue.size();List<Integer> levelNodes = new ArrayList<>();for (int i = 0; i < levelSize; i++) {TreeNode node = queue.poll();levelNodes.add(node.val);if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}}result.add(levelNodes);}return result;}public static void main(String[] args) {// 构建一个二叉树用于测试TreeNode root = new TreeNode(3);root.left = new TreeNode(9);root.right = new TreeNode(20);root.right.left = new TreeNode(15);root.right.right = new TreeNode(7);List<List<Integer>> traversalResult = levelOrderTraversal(root);System.out.println("层序遍历结果:");System.out.println(traversalResult);}
}

实现总结

  • levelOrderTraversal方法返回一个List<List<Integer>>,其中每个内部的List表示一层的节点值
  • 循环过程中,使用了一个内部循环来遍历当前层次的所有节点,并将其值加入到levelNodes
  • 最后将levelNodes加入到结果集合result中
  • 时间复杂度:O(n),n为节点的个数。在整个实现过程中,每个结点都会被访问一次,然后针对每个结点会分别进/出队列一次,为常数时间。设 n 为二叉树的节点数,h 为二叉树的高度,在最差情况下,当二叉树是一条链的时候,h 等于 n。
  • 可能的扩展问题:
    • 如何修改代码以实现Zigzag(蛇形)形式的层序遍历,即交替从左到右和从右到左遍历每一层?
    • 是否可以使用递归方式实现二叉树的层序遍历?如果可以,怎么做?
    • 是否有方法减少空间使用,例如不使用额外的数据结构(队列)?
    • 如何检查二叉树是否是对称的?能否通过层序遍历实现?
    • 如果每个节点除了值之外还包含其他信息,如何适应这种情况?
    • 除了层序遍历,还可以被问及其他遍历方式,比如先序遍历、中序遍历和后序遍历的实现,以及它们的应用。
    • 你的代码的时间复杂度是多少?有没有可能进一步优化?

这些扩展问题会在后续的刷题中逐一解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/411762.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构--排序

参考【算法】排序算法之希尔排序 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/122632213 1. 排序的定义 2. 插入排序 2.1 直接插入排序 在插入第i&#xff08;i>1)个记录时&#xff0c;前面的i-1个记录已经排好序 void insertSort(int r[],int n) {for(int i2;i<…

循环依赖和三级缓存

循环依赖&#xff1a; 是指一个或多个Bean实例之间存在直接或简介的依赖关系&#xff0c;这种依赖关系构成了环形调用(类与类之间的依赖关系形成了闭环)。 循环依赖的表现形式 eg1: 自己依赖自己的直接依赖 eg2: 两个对象之间的直接依赖 eg3: 多个对象之间的间接依赖 Spirng 框…

Notepad++运行C语言输出乱码

方法一&#xff1a;编码-编码字符集-中文-GB2312 这时原程序中文会变成乱码&#xff0c;我是重新输入中文 重新编译执行即可 缺陷&#xff1a;重开一个程序有中文还是会显示乱码&#xff0c;需要重新设置编码&#xff0c;比较麻烦 方法二&#xff1a;设置-首选项-新建-右侧编…

IntelliJ IDEA 拉取gitlab项目

一、准备好Gitlab服务器及项目 http://192.168.31.104/root/com.saas.swaggerdemogit 二、打开 IntelliJ IDEA安装插件 打开GitLab上的项目&#xff0c;输入项目地址 http://192.168.31.104/root/com.saas.swaggerdemogit 弹出输入登录用户名密码&#xff0c;完成。 操作Comm…

Azure Machine Learning - 聊天机器人构建

目录 聊天机器人架构概述消耗成本环境准备打开开发环境部署和运行将聊天应用部署到 Azure使用聊天应用从 PDF 文件获取答案使用聊天应用设置更改答复行为 本文介绍如何部署和运行适用于 Python 的企业聊天应用示例。 此示例使用 Python、Azure OpenAI 服务和 Azure AI 搜索中的…

5D动感影院新奇体验丰富环境特效7D互动影院

5D动感影院太火啦&#xff01;凭借真实互动感、全视景高清屏幕、立体环绕音效、D打造新颖沉浸式观影体验&#xff0c;成为年轻人/家长/小朋友的新晋打卡聚集地&#xff0c;时刻上演着精彩绝伦的视觉盛宴&#xff01; 1、5D动感影院【硬件组成】&#xff1a;动感平台、金属银幕、…

【LabVIEW FPGA入门】FPGA中的数学运算

数值控件选板上的大部分数学函数都支持整数或定点数据类型&#xff0c;但是需要请注意&#xff0c;避免使用乘法、除法、倒数、平方根等函数&#xff0c;此类函数比较占用FPGA资源&#xff0c;且如果使用的是定点数据或单精度浮点数据仅适用于FPGA终端。 1.整数运算 支持的数…

设计模式—— 单例设计模式

单例设计模式 什么是单例模式 单例模式是一种对象创建型模式&#xff0c;使用单例模式&#xff0c;可以保证为一个类只生成唯一的实例对象。也就是说&#xff0c;在整个程序空间中&#xff0c;该类只存在一个实例对象。 为什么使用单例模式 在应用系统开发中&#xff0c;我…

指向未来: 量子纠缠的本质是一个指针

指向未来: 量子纠缠的本质是一个指针 概述基本概念理解量子纠缠PythonJavaC 理解波粒二象性PythonJavaC 理解量子隧穿理解宇宙常量PythonJavaC 概述 量子纠缠 (Quantum Entanglement) 是量子系统重两个或多个粒子间的一种特殊连接, 这种连接使得即使相隔很远, 这些粒子的状态也…

e2studio开发三轴加速度计LIS2DW12(3)----检测活动和静止状态

e2studio开发三轴加速度计LIS2DW12.3--检测活动和静止状态 概述视频教学样品申请源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()…

4D毫米波雷达——原理、对比、优势、行业现状

前言 4D 毫米波雷达是传统毫米波雷达的升级版&#xff0c;4D指的是速度、距离、水平角度、垂直高度四个维度。 相比传统 3D 毫米波雷达&#xff0c;4D 毫米波雷达增加了“高度”的探测&#xff0c;将第四个维度整合到传统毫米波雷达中。 4D毫米波雷达被视为未来车载雷达的一…

Redis 笔记一

概览 1.Redis核心数据存储结构 2.Redis底层String编码int&embstr&raw 3.Redis底层压缩列表&跳表&哈希表 4.Redis底层Zset实现压缩列表和跳表如何选择 5.基于Redis实现微博&抢红包&12306核心业务 辅助学习&#xff1a;Redis 教程 | 菜鸟教程 1.Redis为什…