#include <iostream>
#include <queue>
#include <vector>
using namespace std;
/**
* 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) {}
* };
*/
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<int> levelOrder(TreeNode* root) {
vector<int> result;
if(root == nullptr) {
return result;
}
queue<TreeNode*> que;
int depth = 1;
que.push(root);
while (!que.empty()) {
int count = que.size();
int curLevelMax = INT_MIN;
while(count > 0) {
TreeNode* node = que.front();
que.pop();
curLevelMax = node->val > curLevelMax ? node->val : curLevelMax;
if(node->left)
que.push(node->left);
if(node->right)
que.push(node->right);
count--;
}
result.push_back(curLevelMax);
}
return result;
}
vector<int> getIndex(TreeNode *root, vector<int> target) {
// 先进行bfs
vector<int> bfs_result = levelOrder(root);
//打印bfs结果
cout << "bfs result :" << endl;
for(auto each_col : bfs_result) {
cout << each_col << " " << endl;
}
// 然后依次比较
vector<int> index_result;
int cur_max_depth = -1;
for(auto each_targe : target) {
for(int i = bfs_result.size() - 1; i >= 0; i--) {
if(bfs_result[i] > each_targe) {
cur_max_depth = i+1;
break;
}
}
index_result.push_back(cur_max_depth);
cur_max_depth = -1;
}
return index_result;
}
};
int main() {
std::cout << "Hello, World!" << std::endl;
TreeNode root(3);
TreeNode l1_1(4);
TreeNode l1_2(11);
TreeNode l2_1(3);
TreeNode l2_2(8);
TreeNode l3_1(7);
TreeNode l3_2(5);
root.left = &l1_1;
root.right = &l1_2;
l1_1.left = &l2_1;
l1_2.right = &l2_2;
l2_1.left = &l3_1;
l2_2.right = &l3_2;
Solution s1;
vector<int> target = {6,2,9,7,9};
vector<int> com_result =s1.getIndex(&root, target);
cout << "result " << endl;
for(auto each : com_result)
cout << each << " ";
return 0;
}
相关推荐
2023年第二十届五一数学建模竞赛C题:“双碳”目标下低碳建筑研究-思路详解与代码答案
2023年第二十届五一数学建模竞赛C题:“双碳”目标下低碳建筑研究-思路详解与代码答案
力扣(LeetCode)数据结构练习题
这里我们从题目可知我们要将nums2合并到nums1中,其中nums1的长度为m+n,那么如果我们从nums1的前面开始排序,我们就会因为排序而丢失前面nums1原来的值,所以我们就要从末尾开始排序,所以我们在代码中先定义出三个整形变量end1,end2,end,分别进行运算,进行while循环在两个数组都没比较结束到首元素时我们进行比较后放入nums1的末尾,当有一个nums1的比较元素已经到首元素时,如果nums2的元素还没比较完,那么我们就需要将nums2的元素全排在前面即可。
ARTIX-7 GTP 3G-SDI 工程构建与调试实战
本文详细介绍了基于ARTIX-7 FPGA和GTP收发器的3G-SDI工程构建与调试实战。从基础概念解析到Vivado工程创建、GTP IP核配置、SDI IP核集成,再到系统集成与时钟域处理,提供了全面的技术指导。文章还分享了调试技巧、常见问题排查方法以及性能验证步骤,帮助开发者快速掌握3G-SDI视频传输技术的实现与优化。
力扣练习题题库(持续更新)
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。输入不存在公共前缀。
【冷冻电镜】RELION5.0使用教程总结
对于您自己的数据,您可能希望使用各种倾斜系列对齐方法,然后比较每种方法生成的断层扫描图像的质量(参见下一步)。通过检查 CtfFind job 的 tilt_series 目录中的star文件来检查几个倾斜系列的散焦值。GitHub上也有人反应这个问题,目前我的解决方案是下载了较低版本的CTFFIND的,降级到4.1.10可以成功运行。此外,logfile.pdf 文件包含所有显微照片的有用参数图,例如散焦、像散、估计分辨率等,以及整个数据集中这些值的直方图。的目录,以及指向此目录的符号链接。
深度学习模型轻量化方法之【量化】
量化虽然有着硬件友好和功效提升的特点,但它也引入了模型性能的折衷。因此,设计有效的量化策略需要在模型大小、性能以及运算速度之间做出平衡。随着深度学习算法和硬件加速技术的快速发展,量化方法在使深度网络轻量化和提高部署效率方面持续发挥着重要作用。
力扣mysql练习题01(简单)
力扣mysql练习题01(简单) 题目 Create table Person (PersonId int, FirstName varchar(255), LastName varchar(255)) Create table Address (AddressId int, PersonId int, City varchar(255), State varchar(255)) Truncate table Person insert into Person (PersonId, LastName, Fi
NVIDIA Jetson之远程控制软件NoMachine安装使用
参考:https://www.bilibili.com/video/BV1cg4y1i776?t=12 0 背景
【线性表】- LeetCode力扣三道练习题详解
作者:甘城なつき 文章简介:LeetCode题目:27. 移除元素 26. 删除有序数组中的重复项 88. 合并两个有序数组 三道 OJ 题详解。
SIMULINK开发项目实例 1000 例专栏之第960例--基于电力系统稳定性的建模与仿真场景:-含分布式电源的配电网电压稳定性研究
间歇性与随机性:例如,太阳能依赖于日照强度,风能依赖于风速,这使得它们的输出功率具有不确定性。逆变器接口:大多数分布式电源通过逆变器接入电网,这对电网的动态响应特性产生了影响。位置分散:通常分布在用户侧或靠近负荷中心的位置。本文详细介绍了如何使用Simulink结合Simscape Electrical 构建一个用于研究含分布式电源配电网电压稳定性的模型,并提供了详细的仿真流程说明。
提示词驱动的智能合同生成与审核
第1章:核心概念与背景 1.1.1 问题背景 1.1.1.1 合同生成与审核的需求 合同作为商业和法律领域中的基本工具,其生成和审核过程至关重要。传统的合同生成往往依赖于法律专业人士的手工撰写,这不仅耗时耗力,而且容易出现错误。此外,合
LeetCode-SQL练习题总结(MySQL实现)
LeetCode上的SQL练习题一共有十九道,题目网址:https://leetcode-cn.com/problemset/database/ 本文将对其中的部分题做一个总结。 176.查询第二高的薪水: 编写一个 SQL 查询,获取Employee表中第二高的薪水(Salary)。 +----+--------+ | Id | Salary | +----+--------+...
华为OD机试 - 项目规划 - 深度优先搜索dfs(Java 2024 C卷 100分)
每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。
【力扣练习题】【双指针】14-最长公共前缀
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
力扣leetcode数组和字符串练习题
力扣leetcode数组和字符串练习题
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
【力扣练习题】【迭代法】206. 反转链表
在这里插入图片描述。
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
【力扣练习题】【递归】144/94/145. 二叉树的前、中、后序遍历
前序:中序:后序:在这里插入图片描述。
Leetcode力扣必备算法知识和练习题
https://www.bilibili.com/video/BV1xt4y1e7q4?p=1 一、双指针算法 | Two Pointers 双指针算法是指利用两个指针遍历数组(链表),左右指针相向前进或同向前进,在遍历过程中根据某种限制条件进行筛选,通常可以把时间复杂度降低至O(n)。 普通双指针:两个指针同向移动 对撞双指针:两个指针面对面移动 快慢双指针:慢指针+快指针 1、快慢指针 141. 环形链表 public boolean hasCycle(ListNode ..
Leetcode练习题:动态规划
Leetcode练习题:动态规划_不要偷懒xj的博客-优快云博客
【力扣练习题】【双指针】28-找出字符串中第一个匹配项的下标
力扣关于链表有关的练习题
力扣链表题目
【力扣练习题】【数组】27- 移除元素
【力扣练习题】【数组】27- 删除有序数组中的重复项@
【树结构与栈】中等力扣练习题
二叉树中和为目标值的路径:给你二叉树的根节点root和一个整数目标和targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径。叶子节点是指没有子节点的节点。彩灯装饰记录I:一棵圣诞树记作根节点为root的二叉树,节点值为该位置装饰彩灯的颜色编号。请按照从左到右的顺序返回每一层彩灯编号。验证图书取出顺序:现在图书馆有一堆图书需要放入书架,并且图书馆的书架是一种特殊的数据结构,只能按照一定的顺序放入和拿取书籍。给定一个表示图书放入顺序的整数序列p
【力扣练习题】【双指针】160-相交链表
如果指针 pA 为空,则将指针 pA 移到链表 headB 的头节点;如果指针 pB 为空,则将指针 pB 移到链表 headA 的头节点。如果指针 pA 不为空,则将指针 pA 移到下一个节点;如果指针 pB 不为空,则将指针 pB 移到下一个节点。当指针 pA 和 pB 指向同一个节点或者都为空时,返回它们指向的节点或者 null。每步操作需要同时更新指针 pA 和 pB。
力扣(LeetCode)数据结构练习题(2)
这里的题目也是很明了的,让我们返回一个中间节点就行了 ,那么我们要解决的就是如何找到中间节点,很多人想的办法是遍历一遍求出长度,然后又遍历到中间节点返回,但是这样就会增加时间复杂度了。然后我们就可以将代码往后遍历,这时n3的作用就是提前记住原来n2的next,然后令n2=n3,n1=n2,即可完成往后遍历。现在我们来审题,题目很明了让我们反转一个单向链表,那么这里我们就可以简单思考一下思路了,有了思路我们就可以开始尝试一下写代码了。我们这里是将节点里的指针进行反转即可完成链表的反转。
1万+



被折叠的 条评论
为什么被折叠?



