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

每天一道leetcode:剑指 Offer 32 - III. 从上到下打印二叉树 III(中等广度优先遍历)

今日份题目:

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

示例

给定二叉树: [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:
[
  [3],
  [20,9],
  [15,7]
]

提示

1. 节点总数 <= 1000

题目思路

使用广度优先遍历,与II不同之处在于,需要对偶数行的内容进行翻转。这里用到了c++库中的reverse函数进行vector的int型内容的翻转。

reverse ( v.begin( ) , v.end ( ) )

代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution 
{
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int> > ans;if(root==NULL) return {};queue<TreeNode*> p;//BFSp.push(root);int flag=0;while(!p.empty()){int n=p.size();ans.push_back(vector<int> ());for(int i=0;i<n;i++){TreeNode* cur=p.front();p.pop();ans.back().push_back(cur->val);if(cur->left) p.push(cur->left);if(cur->right) p.push(cur->right);} }for(int i=1;i<ans.size();i+=2) reverse(ans[i].begin(),ans[i].end());return ans;}
};

提交结果

 欢迎大家在评论区讨论,如有不懂的代码部分,欢迎在评论区留言!

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

相关文章:

  • day10 快速排序 方法重载 和 方法递推
  • Qt 6. 其他类调用Ui中的控件
  • PHP 的不同版本(src 版、nts 版和 win 版)之间的区别和共同点。
  • 3 vue的if语法
  • python基础3——流程控制
  • kubernetes中最小组件——Pod
  • C++ 友元
  • Vulkan 绘制显示设计
  • Linux性能分析工具介绍(一)--cpu及功耗相关工具介绍
  • 智能财务分析的无冕之王-奥威BI数据可视化工具
  • .NET 应用程序 部署
  • Linux CentOS安装NVIDIA GPU驱动程序和NVIDIA CUDA工具包
  • 剑指Offer13.机器人的运动范围 C++
  • List、Map、Set打印
  • 软件机器人在渔业船员证书核发中自动化二次审批制证,提高效率和准确性
  • Godot4 C# vscode开发环境搭建
  • nginx简介与安装配置,目录结构和配置文件介绍
  • CTF流量题解http4.pcapng
  • 旷视科技AIoT软硬一体化走向深处,生态和大模型成为“两翼”?
  • STM32 F103C8T6学习笔记2:GPIO的认识—GPIO的基本输入输出—点亮一个LED
  • 数组相关练习
  • Leetcode-每日一题【剑指 Offer 11. 旋转数组的最小数字】
  • git教程(第一次使用)
  • Autoware.ai1.14.0自动驾驶-Demo运行
  • AttributeConverter
  • 【逗老师的PMP学习笔记】8、项目质量管理
  • Zookeeper集群
  • 后端进阶之路——Spring Security构建强大的身份验证和授权系统(四)
  • 【香瓜说职场】第10月(2018.01.29)
  • ​LeetCode解法汇总1749. 任意子数组和的绝对值的最大值