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

二叉树层序遍历

二叉树的递归和迭代遍历都是深度优先搜索,而二叉树层序遍历是广度优先搜索
层序遍历一个二叉树,就是从左到右一层一层的去遍历二叉树,队列先进先出,符合一层一层遍历的逻辑,而栈先进后出模拟深度优先遍历也就是递归的逻辑

学完之后你就可以一口气凎完下面十道力扣题目

102. 二叉树的层序遍历

class Solution {//定义嵌套链表public List<List<Integer>> resList = new ArrayList<>();public List<List<Integer>> levelOrder(TreeNode root) {//使用递归法进行BFS//递归方法method1(root,0);return resList;}//递归public void method1(TreeNode root,int deep){//避免空指针异常if(root == null){return;}deep++;while(resList.size() < deep){//说明此时有不为空的数据存在List<Integer> item = new ArrayList<>();//要先创建空的item,再加入resListresList.add(item);}// 把这个写在while循环外的原因是,防止每次遇到// 新的不为空的节点再创建空的item,还有就是为了让// 每一层不为第一个节点时可以添加进链表resList.get(deep - 1).add(root.val);method1(root.left,deep);method1(root.right,deep);}
}

使用队列
队列怎么使用

class Solution {//定义公共嵌套链表public List<List<Integer>> resList = new ArrayList<>();public List<List<Integer>> levelOrder(TreeNode root) {method2(root);return resList;}public void method2(TreeNode root){//防止空指针异常if(root == null){return;}//创建一个队列来遍历二叉树Queue<TreeNode> que = new LinkedList<>();//给队列里面先加入头节点que.offer(root);while(!que.isEmpty()){//创建嵌套链表里面的整型链表List<Integer> tmpList = new ArrayList<>();int len = que.size();while(len > 0){TreeNode tmpNode = que.poll();tmpList.add(tmpNode.val);if(tmpNode.left != null){que.offer(tmpNode.left);}if(tmpNode.right != null){que.offer(tmpNode.right);}len--;}resList.add(tmpList);}}
}

107. 二叉树的层序遍历 II
199. 二叉树的右视图
637. 二叉树的层平均值
429. N 叉树的层序遍历
515. 在每个树行中找最大值
116. 填充每个节点的下一个右侧节点指针
117. 填充每个节点的下一个右侧节点指针 II
104. 二叉树的最大深度
111. 二叉树的最小深度

未完待续

http://www.dtcms.com/a/158308.html

相关文章:

  • React-Hook
  • Java基础第五章、面向对象程序设计
  • AIGC赋能智慧医疗:从影像诊断到个性化治疗的革命性突破
  • 初始网络流(最小割)
  • 构建AI大模型应用的LangChain之核心功能
  • USART串口通讯
  • 计算机网络基本概念
  • 快速上手c语言
  • 基于NVIDIA RTX 4090的COLMAP 3.7安装指南:Ubuntu 20.04 + CUDA 11.8环境配置【2025最新版!!】
  • 内存池管理项目——面试题总结
  • 自动化运维:从工具到实践的全面解析
  • Redux基础知识
  • c++学习小结
  • Fedora 43 计划移除所有 GNOME X11 相关软件包
  • 泛型进阶之通配符
  • 备忘录模式 (Memento Pattern)
  • 元组类型的特性与应用场景:深入理解元组在 TypeScript 中的使用
  • vue3获取麦克风权限通过websocket进行通话
  • Group By Sets语法
  • 计算机二级MS Office第九套演示文稿
  • 数据结构与算法学习笔记(Acwing提高课)----动态规划·最长上升子序列模型
  • 【Linux系统】Ext系列文件系统
  • 【黑马JavaWeb+AI知识梳理】前端Web基础01 - HTML+CSS
  • Java进阶--面向对象设计原则
  • 大规模数据同步后数据总条数对不上的系统性解决方案:从字段映射到全链路一致性保障
  • Sam算法基本原理解析
  • CPU与GPU的功能与区别解析
  • 运维面试情景题:如果有一块新的硬盘要加入机架如何配置;如果新加了一台服务器,如何配置安全措施
  • DeepSeek预训练追求极致的训练效率的做法
  • 2025.04.26-淘天春招笔试题-第三题