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

(LeetCode 面试经典 150 题) 102. 二叉树的层序遍历(广度优先搜索bfs)

题目:102. 二叉树的层序遍历

在这里插入图片描述

思路:广度优先搜索bfs,时间复杂度0(n)。
广度优先搜索bfs,每次遍历该层的数量即可。

C++版本:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> ans;if(root==nullptr) return ans;queue<TreeNode *> qu;qu.push(root);// 广度优先搜索bfswhile(qu.size()){// 每次遍历该层的数量int n=qu.size();vector<int> v;while(n--){TreeNode * tmp=qu.front();qu.pop();v.push_back(tmp->val);if(tmp->left!=nullptr) qu.push(tmp->left);if(tmp->right!=nullptr) qu.push(tmp->right);}ans.push_back(v);}return ans;}
};

JAVA版本:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> ans=new ArrayList<>();if(root==null) return ans;Queue<TreeNode> qu=new LinkedList<>();qu.add(root);while(!qu.isEmpty()){int n=qu.size();List<Integer> v=new ArrayList<>();while(n>0){n--;TreeNode tmp=qu.poll();v.add(tmp.val);if(tmp.left!=null) qu.add(tmp.left);if(tmp.right!=null) qu.add(tmp.right);}ans.add(v);}return ans;}
}

GO版本:

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func levelOrder(root *TreeNode) [][]int {ans:=[][]int{}if root==nil {return ans}qu:=[]*TreeNode{root}for len(qu)!=0 {n:=len(qu)v:=[]int{}for i:=0;i<n;i++ {tmp:=qu[0]qu=qu[1:]v=append(v,tmp.Val)if tmp.Left!=nil {qu=append(qu,tmp.Left)} if tmp.Right!=nil {qu=append(qu,tmp.Right)}}ans=append(ans,v)}return ans
}
http://www.dtcms.com/a/353875.html

相关文章:

  • Miniforge3替代Anaconda的一些经验总结
  • STL库——vector(类模拟实现)
  • 旧物二手回收小程序系统:让闲置旧物焕发新生,创造无限价值
  • Leetcode 深度优先搜索 (14)
  • 胶水研究记录学习1
  • 回顾websocket心跳机制以及断线重连(服务端为node)
  • 数据结构——抽象数据类型(ADT)
  • 浏览器渲染帧管线全景拆解:从像素到屏幕的 16.67 ms 之旅
  • Linux内核bitmap组件详解
  • 给Ubuntu添加新用户
  • MyBatis 之关联查询(一对一、一对多及多对多实现)
  • Ansible Playbook 概述与实践案例(下)
  • 基于muduo库的图床云共享存储项目(二)
  • STM32 之串口WIFI应用--基于RTOS的环境
  • AlphaFold 2 本地部署与安装教程(Linux)
  • ICCV 2025 | 清华IEDA提出GUAVA,单图创建可驱动的上半身3D化身!实时、高效,还能捕捉细腻的面部表情和手势。
  • 【51单片机】【protues仿真】基于51单片机篮球计时计分器数码管系统
  • 什么是代理ip?代理ip的运作机制
  • C++ 中 ::(作用域解析运算符)的用途
  • 大小鼠糖水偏爱实验系统 糖水偏好实验系统 小鼠糖水偏好实验系统 大鼠糖水偏好实验系统
  • 【半导体制造流程概述】
  • 优化IDEA卡顿的问题
  • 使用CCProxy搭建http/https代理服务器
  • AWS OpenSearch 可观测最佳实践
  • Maya绑定:人物绑定详细案例
  • 数据结构之 【红黑树的简介与插入问题的实现】
  • 数值分析离散积分近似求值
  • 【数据分析】微生物群落网络构建与模块划分的比较研究:SparCC、Spearman-RAW与Spearman-CLR方法的性能评估
  • Shell编程-随机密码生成
  • volitale伪共享问题及解决方案