LeetCode 每日一题 Day 13 || BFS

2415. 反转二叉树的奇数层

给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。

例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] ,那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。
反转后,返回树的根节点。

完美 二叉树需满足:二叉树的所有父节点都有两个子节点,且所有叶子节点都在同一层。

节点的 层数 等于该节点到根节点之间的边数。

示例 1:
在这里插入图片描述

输入:root = [2,3,5,8,13,21,34]
输出:[2,5,3,8,13,21,34]
解释:
这棵树只有一个奇数层。
在第 1 层的节点分别是 3、5 ,反转后为 5、3 。

示例 2:
在这里插入图片描述

输入:root = [7,13,11]
输出:[7,11,13]
解释:
在第 1 层的节点分别是 13、11 ,反转后为 11、13 。

示例 3:

输入:root = [0,1,2,0,0,0,0,1,1,1,1,2,2,2,2]
输出:[0,2,1,0,0,0,0,2,2,2,2,1,1,1,1]
解释:奇数层由非零值组成。
在第 1 层的节点分别是 1、2 ,反转后为 2、1 。
在第 3 层的节点分别是 1、1、1、1、2、2、2、2 ,反转后为 2、2、2、2、1、1、1、1 。

提示:
树中的节点数目在范围 [1, 214] 内
0 <= Node.val <= 105
root 是一棵 完美 二叉树

BFS,用队列 q存储每一层的节点,用变量 i记录当前层数。若 i为奇数,将当前层的节点值反转即可:

/*** 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:TreeNode* reverseOddLevels(TreeNode* root) {queue<TreeNode*> q{{root}};for (int i = 0; q.size(); ++i) {vector<TreeNode*> t;for (int k = q.size(); k; --k) {TreeNode* node = q.front();q.pop();if (i & 1) {t.push_back(node);}if (node->left) {q.push(node->left);q.push(node->right);}}for (int l = 0, r = t.size() - 1; l < r; ++l, --r) {swap(t[l]->val, t[r]->val);}}return root;}
};

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

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

相关文章

redis:二、缓存击穿的定义、解决方案(互斥锁、逻辑过期)的优缺点和适用场景、面试回答模板和缓存雪崩

缓存击穿的定义 缓存击穿是一种现象&#xff0c;具体就是某一个数据过期时&#xff0c;恰好有大量的并发请求过来&#xff0c;这些并发的请求可能会瞬间把DB压垮。典型场景就是双十一等抢购活动中&#xff0c;首页广告页面的数据过期&#xff0c;此时刚好大量用户进行请求&…

springcloud:对象存储组件MinIO

类似于FastDFS/HDFS的一个文件存储服务&#xff01; SpringBoot整合MinIO实现分布式文件服务&#xff01; #MinIO简介&#xff1f; Minio 是个基于 Golang 编写的开源对象存储套件&#xff0c;基于Apache License v2.0开源协议&#xff0c;虽然轻量&#xff0c;却拥有着不错的…

什么是开放式耳机?骨传导耳机是开放式耳机吗?

一、什么是开放式耳机&#xff1f; 开放式耳机是一种无需入耳佩戴的蓝牙耳机&#xff0c;在佩戴上比传统入耳耳机更加稳固舒适&#xff0c;更适合运动场景佩戴&#xff0c;而且使用的时候不会隔绝周围环境声&#xff0c;可以时刻注意到周围的环境变化&#xff0c;使用更安全。…

PFA三口烧瓶本底纯净耐强酸实验室常用反应烧瓶

PFA&#xff08;聚氟乙烯&#xff09;三口烧瓶是一种在化学实验室中广泛使用的常规实验仪器&#xff0c;它具有许多优点&#xff0c;使其成为许多实验室中使用的首选容器。以下是PFA三口烧瓶的主要优点&#xff1a; 1. 高耐化学性&#xff1a;PFA三口烧瓶是由聚氟乙烯制成的&am…

触想智能工业一体机在金属3D打印机上的应用

1、行业发展背景 3D打印又称“增材制造”&#xff0c;是一种以数字模型为基础&#xff0c;通过逐层堆叠将打印材料熔结固化为三维实体物件的先进制造技术。 随着航空航天、科研、医疗、汽车等精工领域的颠覆性发展&#xff0c;制造业对于高强度、高精度、轻量型、柔性化金属零件…

NFTScan | 12.11~12.17 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.12.11~ 2023.12.17 NFT Hot News 01/ Pudgy Penguins 衍生 NFT Lil Pudgys 过去一天成交量超 1000 枚 ETH&#xff0c;位居第二 12 月 11 日&#xff0c;据 OpenSea 数据显示&#…

Day63力扣打卡

打卡记录 寻找最近的回文数&#xff08;模拟&#xff09; 链接 class Solution:def nearestPalindromic(self, n: str) -> str:m len(n)candidates [10 ** (m - 1) - 1, 10 ** m 1]selfPrefix int(n[:(m 1) // 2])for x in range(selfPrefix - 1, selfPrefix 2):y …

Kotlin Multiplatform的现状—2023年网络研讨会

Kotlin Multiplatform的现状—2023年网络研讨会 在2023年&#xff0c;Kotlin Multiplatform因其开发、当前状态和未来潜力而受到了相当大的关注。随着越来越多的开发者对采用KMP进行跨平台解决方案表示兴趣&#xff0c;JetBrains在11月下旬推出了一系列网络研讨会作为回应。首…

功放诊断测试

1.切换trace显示时间模式&#xff0c;Toggle time mode 2.测seedkey 需要加载seednkey.dll 3.功能寻址和物理寻址切换

制作RK3568 ubuntu20.04桌面版镜像

平台 主控: RK3568 编译主机: Ubuntu 20.04 AMD64 目标版本: Ubuntu 20.04 概述 RK3568是极具性价比的高能国产“芯“ , 是Rockchip面向与AIOT和工业市场打造的一款高性能、低功耗、功能丰富的国产化应用处理器。采用四核64位Cortex-A55架构&#xff0c;主频高达2.0GHz&#x…

【docker】修改docker的数据目录

背景 主节点是分配了较少内存和存储的低配机器&#xff0c;因为我们系统的rancher是用docker镜像启动的&#xff0c;而rancher和docker的默认目录都放在/var/lib下面&#xff0c;而这个/var目录目前只分配10G的存储&#xff0c;导致节点存储报警。因此想修改docker的数据目录&…

Linux值得学习吗?打工人利用业务时间学习Linux需要多长时间?

Linux值得学习吗&#xff1f;打工人利用业务时间学习Linux需要多长时间&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「 Linux的资料从专业入门到高级教程工具包」&#xff0c;点个关注&…