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

二叉树的层序遍历--力扣

一、题目描述

链接:102. 二叉树的层序遍历 - 力扣(LeetCode)

题目:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。

提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000

示例1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

二、题解

        层序遍历可以直接采用广度优先遍历的思想解决,但是本题对输出结果有特定的要求,需要将每层的数据放在一个二维数组的一行中。因此在遍历二叉树的同时还需要记录数据属于哪一层。遍历时采用队列记录节点。

       在记录节点时队列里面最多会记录两层的数据,在第一层节点进入时队列无节点,第一层出队列时第二层近队列,当第一层完全出队列后第二层完全进队列,此时队列就只有第二次的节点,如此循环。因此可以在入队列的时候记录当前层有多少元素,或者在每次一层循环结束时的队列中节点数即可用一个队列完成遍历,如果不想记录可以用两个队列一个存放当前层节点另一个存放下一层节点,当前层为空时一次循环结束,同时将队列进行交换即可完成层数的变换。

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> vv;queue<TreeNode*> q;int levelSize = 0;if(root){q.push(root);}while(!q.empty()){vector<int> v;levelSize = q.size();while(levelSize--){       v.push_back(q.front()->val);if(q.front()->left){q.push(q.front()->left);}if(q.front()->right){q.push(q.front()->right);}q.pop();}vv.push_back(v);}return vv;}
};
http://www.dtcms.com/a/441936.html

相关文章:

  • 解决Linux下操作无权限问题——chmod: 正在更改...的权限:不允许的操作
  • 哈尔滨论坛建站模板ftp上传网站后怎么弄
  • 使用D3.js画人物关系图
  • 数据结构与算法篇--语义智能指针设计模式
  • 微信小程序入门学习教程,从入门到精通,WXML(WeiXin Markup Language)语法基础(8)
  • 明天好好总结汇总分析博客
  • HTML--在textarea左侧添加行号
  • mysql逻辑备份跟物理备份的区别
  • Django 学习日志
  • 如何用word做简单的网站wordpress绑定
  • 第十三篇:Python并发编程进阶:多进程(multiprocessing)
  • 硬件-电容学习DAY23——电容设计实战指南:从选型到高频应用
  • 20232022年408真题易错知识点整理
  • 【Qt开发】输入类控件(四)-> QSpinBox
  • uniapp与webview通信
  • 地推app接任务平台网站图片大小优化
  • Java Stream API
  • Freqtrade - 快速开始Quick Start
  • C++list全解析
  • KafKa概念与安装
  • 基于单片机和LabVIEW的多路数据采集器系统设计(论文+源码)
  • 网站你懂我意思正能量晚上在线下载免费软件魅族网站被黑客入侵怎么办
  • C语言笔记(2)
  • interface range 概述及题目
  • web:vue中方法watch和方法watchEffect的对比
  • 微信息公众平台微网站建设郴州网站建设费用价格
  • leetcode 35.搜索插入的位置 python
  • 探索 Docker/K8s 部署 MySQL 的创新实践与优化技巧——容器化部署深度解析
  • 信奥赛CSP-J复赛集训(语法基础专题)(1):三位数排序(文末附讲课视频)
  • 购物分享网站怎么做的网站建设服务中心