UVa122 二叉树动态创建与BFS

(二叉树的动态创建与bfs)树的层次遍历 题目: 例:输入一棵二叉树,你的任务是按从上到下,从左到右的顺序输出每一个节点的值。每个节点都按照从根节点到它的移动序列给出(L表示左,R表示右)。在输入中,每个节点的左括号和右括号之间没有空格,相邻节点之间用一个空格隔开。每课树的输入用一对空括号“()”结束(这对括号本身不代表任何节点)。注意,如果从根到某个节点的路径上有的节点没有在输入的中给出,或者给出超过一次,输出-1。节点个数不超过25... 阅读详情

这题就是定义了二叉树的结点类型,然后由根节点开始通过解析表达式LR……生成一个树
注意判断一个结点是否被多次赋值,题目要求一个节点多次赋值最后答案要输出错误结论,提交的时候曾经因为这个问题WA了
树的BFS:通过队列实现,一开始先把根节点push,当队列不为空时取出队列头保存,把它的左子结点和右子节点push进队,就可以完成树的层次遍历

代码实现

#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;

//树的节点
struct node
{
    bool have_value;
    int value;
    node *left;
    node *right;
    node() {
        have_value = false;
        left = NULL;
        right = NULL;
    }
};
node *root; //根节点
bool failed;
//input->addnode->bfs
void addnode(int value, string LR)
{
    int n = LR.size();
    if (n == 2)
    {
        root->value = value;
        root->have_value = true;
    }
    else
    {
        node *temp=root;
        for (int i = 1; i < n; i++)
        {
            if (LR[i] == 'L')
            {
                if (temp->left == NULL)
                    temp->left = new node();
                temp = temp->left;
            }
            else if (LR[i] == 'R')
            {
                if (temp->right == NULL)
                    temp->right = new node();
                temp = temp->right;
            }
        }
        //找到要赋值的节点,准备赋值
        if (temp->have_value)
            failed = true;
        temp->value = value;
        temp->have_value = true;
        //cout << temp->value << endl;
    }
}
bool input()
{
    string inputOrder;
    failed = false;//判断是否有重复的值
    root = new node();
    for(;;)
    {
        if (!(cin >> inputOrder))
            return false;
        if (inputOrder.size() == 2) //()的情况
            break;
        int value= stoi(inputOrder.substr(inputOrder.find_first_of("0123456789")));
        //cout << value;
        string LR = inputOrder.substr(inputOrder.find(","));
        //cout << " " << LR << endl;
        addnode(value, LR);
    }
    return true;
}
bool bfs(vector<int> &result) //如果有节点没有被赋值则返回false
{
    result.clear();
    node *temp = root;
    queue<node*> bfsqueue;
    if (root->have_value)
        bfsqueue.push(temp);
    else
        return false;
    while (!bfsqueue.empty())
    {
        node *front = bfsqueue.front();
        if (front->have_value)
            result.push_back(front->value);
        else
            return false;
        bfsqueue.pop();
        if (front->left != NULL)
        {
            bfsqueue.push(front->left);
        }
        if (front->right != NULL)
        {
            bfsqueue.push(front->right);
        }
    }
    return true;
}
int main()
{
    while (input())
    {
        vector<int> result;
        if (bfs(result)&&(!failed))
        {
            for (auto it = result.begin(); it != result.end(); it++)
            {
                if (it == result.begin())
                    cout << *it;
                else
                    cout << " "<<*it;
            }
            cout << endl;
        }
        else
        {
            cout << "not complete" << endl;
        }
    }
    system("pause");
    return 0;
}
097634e9169c6777120550ad61afb6bc-1.jpg 立即下载

相关推荐

智能体式AI漫游指南中文版

智能体式AI漫游指南中文版、智能体式AI指南英文原版

【紫书】Trees on the level UVA - 122 动态建树及bfs

题意:给你一些字符串,代表某个值被插入树中的位置。让你输出层序遍历。 题解:动态建树。    由于输入复杂,将输入封装成read_input。注意输入函数返回的情况    再将申请新节点封装成newnode().    最后层序输出直接用bfs实现。 坑:我把ans.clear放到主程序的if里面,导致某特定情况无法初始化,wa了一页//以后debug真的别XJB改细节了...

Vincent19999999的博客 121

YOLO26算法星形目标识别+训练好的模型+100张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[星星(Star)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 85 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9950** mAP50-95 | 0.8477 Precision | 1.0000 Recall | 0.9954 train/box_loss | 0.8235 train/cls_loss | 0.7275 val/box_loss | 0.7248 val/cls_loss | 0.9621 【训练过程分析】 85 轮训练后,我们得到了一个 mAP50 为 0.9950 的模型,这真是让人惊喜的成绩。一开始,模型的训练过程进展非常迅速,loss 在前 20 轮内从 1.5000 下降到 1.0000 附近,此后,loss 依然保持稳步下降,但速度明显放缓,特别是在第 30 轮到第 50 轮之间,loss 曲线进入了一个平台期,大约在 0.85 附近徘徊了 10 轮,直到第 60 轮左右才再度加速下降。这样的表现说明模型在前期阶段收敛良好,但到了后期,确实需要更多的训练轮次以确保模型的稳定性。 在验证集上,val_loss 保持平稳,没有出现明显的波动,这进一步证明了模型没有过拟合。然而,我们注意到在第 80 轮和第 85 轮之间,val_loss 似乎有所微弱的反弹,尽管这种波动并不显著。在训练集上,前 50 轮训... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

二叉树的bfs建立

在确定只有N个元素的时候,使用bfs建立二叉树的方法。 #include <iostream> #include <queue> #include <algorithm> using namespace std; #define N 10000 struct Node { Node* l; Node* r; ...

weixin_30919235的博客 321

国央企如何利用AI工具提升科技创新项目管理与成果转化能力?.docx

国央企如何利用AI工具提升科技创新项目管理与成果转化能力?

融合高斯扰动与竞争学习的改进型多目标部落竞争与成员合作算法(IMOCTCM)求解DTLZ1-DTLZ7及-盘式制动器设计研究(Matlab代码实现)

内容概要:本文档名为《Plecs全桥LLC谐振变换器仿真模型.txt》,但实际内容并非聚焦于该主题,而是一份涵盖多个科研领域的Matlab/Simulink仿真资源汇总清单。文档列举了包括多目标优化算法(如IMOCTCM、MOWAA)、电力电子变换器控制(如LLC谐振变换器、DAB变换器)、电机控制(如PMSM无感控制)、状态估计(如卡尔曼滤波)、微电网调度、无人机路径规划、图像处理、信号处理等多个方向的仿真研究课题,涉及Matlab、Python、Simulink、PSCAD等多种工具和编程语言。文档末尾频繁出现“完整资源下载:公众号——荔枝科研社”及百度网盘链接,表明其核心用途是推广和分享一系列科研仿真资料,服务于学术交流与资源共享。; 适合人群:适用于电气工程、自动化、控制科学与工程、电力系统、电子信息、机械电子、计算机科学等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①为科研工作者提供丰富的Matlab/Simulink仿真案例参考和技术实现思路;②辅助高校师生完成课程设计、毕业设计或学术论文复现工作;③通过获取开源共享资源加速个人或团队的项目开发与算法验证进程。; 阅读建议:该文档属于资源目录性质,缺乏连贯的技术论述与逻辑结构,建议使用者根据自身研究方向筛选相关条目,结合提供的代码和模型进行学习与实践,并注意核实所下载资源的有效性、完整性以及代码运行环境的兼容性。

UVA 122 二叉树的动态创建与BFS

Trees are fundamental in many branches of computer science (Pun definitely intended). Current stateof-the art parallel computers such as Thinking Machines’ CM-5 are based on fat trees. Quad- and octal...

LLer_Dagu的博客 275

储能双向Buck-Boost+模型预测电流控制+电压下垂控制仿真【附参考文献】(Simulink仿真实现)

内容概要:本文档详细介绍了一套针对储能双向Buck-Boost变换器的Simulink仿真资源,融合模型预测电流控制与电压下垂控制策略,适用于微电网及分布式能源系统中的能量管理与稳定控制。仿真模型全面呈现了双向Buck-Boost电路在储能系统充放电过程中的动态行为,重点引入模型预测控制(MPC)与下垂控制相结合的先进控制算法,有效提升了系统的响应速度、稳定性与鲁棒性。文档不仅提供了完整的仿真模型结构与参数设置,还附有详实的参考文献,便于使用者深入理解控制原理并开展理论延伸研究,是电力电子、新能源系统等领域科研与教学的重要实践资料。; 适合人群:电气工程、自动化、新能源等相关专业的硕士博士研究生、科研人员以及从事电力电子变换器与微电网系统设计的工程师。; 使用场景及目标:①用于微电网中储能系统的建模与协调控制策略研究;②开展模型预测控制(MPC)与电压下垂控制在直流变换器中的联合应用仿真分析;③支撑高校电力电子课程实验、毕业设计及科研项目开发,深化对双向DC-DC变换器非线性特性和先进控制算法实现机制的理解。; 阅读建议:建议结合Simulink仿真模型与配套文档同步学习,重点关注控制器的设计逻辑、参数整定方法及系统动态响应特性,推荐对比传统PI控制与先进控制策略的仿真结果,以深入掌握不同控制方案的性能差异与优化路径。

uva122 二叉树的动态创建与BFS (非递归)

题目大意是根据一组一组离根节点的操作确定子节点。 思路:根据操作直接推出节点的编号,将编号和值存在数组中建立二叉树。 #include&lt;bits/stdc++.h&gt; using namespace std; int vis[100000]={0},tree[100000]={0}; char s5[100000]; int main() { // freopen("123.i...

explodee的博客 253

基于双向Buck-Boost电路的锂电池储能充电+放电控制Simulink仿真

内容概要:本文档围绕基于双向Buck-Boost电路的锂电池储能系统展开,详细介绍了其在充电与放电过程中的Simulink仿真设计与实现方法。通过构建双向Buck-Boost电路模型,结合模型预测电流控制与电压下垂控制策略,实现了对锂电池储能系统的高效能量管理与双向功率流动控制。文档提供了完整的仿真模型架构、控制算法设计流程、系统稳定性分析及动态响应性能验证,涵盖了从主电路建模到闭环控制参数整定的关键环节,适用于储能系统中能量双向变换的科研与工程实践。; 适合人群:具备电力电子、自动控制理论及新能源系统基础知识的高校研究生、科研人员以及从事储能系统、微电网、电动汽车等领域技术研发的工程技术人员。; 使用场景及目标:①用于锂电池储能系统的教学实验与科研仿真研究;②支撑微电网、电动汽车、V2G(Vehicle-to-Grid)等应用场景中的能量双向变换与功率调度研究;③深入理解Buck-Boost电路的工作原理及其在实际系统中的先进控制策略实现机制。; 阅读建议:建议在Simulink环境中实际搭建并调试所提供的仿真模型,重点关注控制环路的设计逻辑与参数整定过程,结合文中引用的参考文献深化对系统建模、控制理论与工程应用之间关系的理解。

PSIM-三相维也纳VIENNA整流器电压电流双闭环+中点电位平衡SVPWM控制仿真

内容概要:本文档围绕基于PSIM软件实现的三相维也纳(VIENNA)整流器展开,重点研究其电压电流双闭环控制系统与中点电位平衡控制策略。该仿真模型面向高效率、高功率因数的应用场景,详细构建了维也纳整流器的主电路结构及控制架构,涵盖电压外环与电流内环的双闭环PI控制器设计,以确保系统具备优良的动态响应与稳态性能。针对三电平拓扑中存在的中点电压偏移问题,引入空间矢量脉宽调制(SVPWM)技术进行优化调控,有效抑制中点电位波动,提升输出电压质量和系统运行稳定性。文档还配套提供了Mathcad计算书、仿真模型及相关参考资料,便于读者开展参数设计、控制逻辑分析与仿真复现工作。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员,以及从事新能源变换器、工业电源、电动汽车充电设施等领域的研发工程师和技术人员。; 使用场景及目标:①深入理解三相三电平维也纳整流器的工作原理与数学建模方法;②掌握电压电流双闭环控制系统的结构设计与PI参数整定技巧;③学习SVPWM在中点电位平衡控制中的实现机制与调制策略;④为高功率密度PFC整流器、充电桩前端电路、航空航天电源等高端电力电子装置的研发提供仿真验证平台与技术支撑。; 阅读建议:建议结合PSIM仿真环境动手实践,利用所提供的计算书和参考文献,重点剖析双闭环控制环路的动态特性与SVPWM调制逻辑,并通过改变负载条件、输入电压或系统参数等方式测试系统的鲁棒性与控制有效性,进一步深化对控制策略的理解与工程应用能力。

例题6-7 树的层次遍历(Trees on the level, Duke 1993, UVa 122)

原题链接:https://vjudge.net/problem/UVA-122 分类:树 备注:二叉树的动态创建与BFS 通过该题复习了一下指针。其实能避免用指针还是尽量避免,本来做题很少用指针,不熟地使用指针就是很容易出错。 注意点:每次出现新结点必须要申请新空间,new申请空间可以用构造函数,读入时得一次性读完,不然操作可能出现问题。 代码如下: #include<cstdio> ...

TK_wang_的博客 370

基于透镜天线阵列的毫米波大规模多输入多输出(MIMO)系统可靠波束空间信道估计研究(Matlab代码实现)

内容概要:本文围绕Plecs环境下全桥LLC谐振变换器的仿真模型展开研究,系统阐述了其在电力电子系统中的建模方法、控制策略及动态性能分析。文章详细介绍了LLC谐振变换器的工作原理与典型拓扑结构,基于Plecs仿真平台构建了高精度的系统模型,并对谐振参数设计、软开关实现条件、变频控制策略等关键技术进行了深入的仿真验证。研究进一步探讨了系统在不同负载与输入电压条件下的效率特性、动态响应及稳定性表现,充分展示了LLC变换器在实现高效率、高功率密度电源变换方面的显著优势和应用价值。; 适合人群:具备电力电子与电力系统基础知识,从事开关电源、新能源变换器设计、仿真与控制的研究生、工程师及科研人员。; 使用场景及目标:①作为全桥LLC谐振变换器的仿真教学与科研验证平台;②指导实际工程中LLC变换器的谐振腔参数设计与控制环路优化;③支撑高频高效AC-DC或DC-DC电源系统的开发与综合性能评估。; 阅读建议:建议读者结合Plecs软件动手实践,重点关注谐振参数设计与变频控制环路调试部分,通过对比仿真结果深入理解变换器的软开关实现机理、负载适应性及效率优化方法。

UVA - 122(动态创建二叉树)

但是看见刘汝佳老师的提示,意识到开数组的话节点数最多有256个,所以数组耗费的内存是巨大的,考虑到给出的输入数据是以节点和节点的类似哈夫曼树(不是哈夫曼树)的编码方式的遍历序列,可以在输入的同时,根据输入的节点相关信息来动态创建一个该节点的树,

Lee贤的博客 218

微信小程序如何集成EasyRTC实现零插件音视频通话?5步搞定完整接入流程

本文详细介绍了如何在微信小程序中集成EasyRTC SDK,实现零插件的实时音视频通话功能。通过5个关键步骤,包括环境配置、SDK初始化、核心功能实现、性能优化和问题排查,帮助开发者快速完成WebRTC技术在小程序中的落地应用,解决微信小程序原生不支持实时音视频通信的技术难题。

weixin_28340315的博客 144

完整内、外期货量化交易系统源码可售

支持客户登录校验,支持所有的实时行情和汇总报价功能、实时资讯(报价,列表,分时,分钟成交明晰,),多线程支持盘后收盘作业下载(日线,5分钟线,15分钟, 30分钟,60分钟线,),支持从服务器下载相关运行配置(来自服务器动态配置信息,如收盘日期等),实现状态条显示。收盘作业包括日线、5分钟线、15分钟线、30分钟、60分钟线、2小时线、4小时线每日分时走势。综合信息栏显示用户账户信息、合约信息、当日委托单记录、当日成交记录、当日平仓记录、当日跟单记录、当日(月/周)排行榜、下单栏、持仓信息;

qq_35600909的博客 1805

UVa 122 Trees on the Level

本文介绍了如何根据给定的节点描述序列构建二叉树并输出其层序遍历结果。每个节点由一个正整数和路径字符串表示,路径字符串指示节点在树中的位置。若树完全指定(每个节点仅赋值一次),则输出层序遍历结果;否则输出"not complete"。解题步骤包括动态建树、检查节点赋值完整性、层序遍历输出和内存管理。算法时间复杂度为O(N),空间复杂度为O(N)。代码实现采用递归遍历和动态内存管理,适用于二叉树基本操作练习。

寂静山林 351

特斯拉 Model 3解析(八)全面拆解特斯拉自动驾驶大脑:AP控制器硬核技术解析

算力极限:双FSD = 144 TOPS,专为AI推理优化。存储架构:LPDDR4 + NAND + NOR,保证高速/可靠启动。通信架构:以太网传视频,CAN传控制,TSN保障实时性。感知输入:多路摄像头 + 高速SerDes,满足全景感知。电源设计:功率模块+被动元件海洋,稳定性优先。功能安全:双芯片冗余 + GPS + 紧急呼叫,容错率极高。🎯 在我看来,特斯拉AP控制器就是一台“车载超算”,它在电源设计、存储架构和功能安全上远超一般新势力方案。

weixin_43199439的博客 1442

uva122(二叉树)

这个题刘汝佳讲的输入可以学习一下,有好多关于字符串的技巧,这个树可以用结构体实现,也可以用数组实现,但我用数组实现超时了。 结构体实现代码: #include <iostream> #include <cstdio> #include <cstring> #include <queue> using namespace std; typedef q...

weixin_43763889的博客 183

别再手动配IP了!保姆级教程:用Cisco Packet Tracer搞定DHCP服务器配置(附实验抓包分析)

本文提供了一份详细的Cisco Packet Tracer DHCP服务器配置教程,帮助用户告别手动分配IP的繁琐过程。通过构建多子网实验环境,逐步指导DHCP地址池设置、客户端测试及协议分析,并分享常见问题排查技巧,让网络配置更高效、更智能。

weixin_42535461的博客 339

GD32模拟IIC读写DVC1124

GD32模拟IIC读写集澈AFE芯片DVC1124

ponyma_的博客 1226

UVA ~ 122 ~ Trees on the level (二叉树的创建 + 层次遍历)

题意:输入一棵二叉树,你的任务是按从上到下、从左到右的顺序输出各个结点的值。每个结点都按照从根结点都按照从根结点到他的移动序列给出(L表示左,R表示右)。在输入中,每个结点的左括号和右括号之间没有空格,相邻结点之间用一个空格隔开。每棵树的输入用一对空括号"()"结束(这对括号本身不代表一个结点)。注意,如果从跟到某个结点的路径上有的结点没有在输入中给出,或者给出超过一次,应当输出-1。结点个数不超...

张松超的博客 384

VMvare 桥接模式无法联网、没有未桥接的主机网络适配器,无法将网络更改为桥接状态。

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!战项目源码讲义》点击传送门即可获取!**

q16974058的博客 4331

算法竞赛入门经典(第二版)-刘汝佳-第六章 数据结构基础 例题(18/22)

说明本文是我对第六章22道例题的练习总结,建议配合紫书——《算法竞赛入门经典(第2版)》阅读本文。 另外为了方便做题,我在VOJ上开了一个contest,欢迎一起在上面做:第六章例题contest 如果想直接看某道题,请点开目录后点开相应的题目!!!例题例6-1 UVA 210 并行程序模拟 (p139, 双端队列)思路 暂时还没做。 代码例6-2 UVA 514 铁轨 (p140, 栈

梁山伯的专栏 3037

医疗AI新思路:为什么Graph Neural Network能改善气道分割的漏检问题?

本文探讨了Graph Neural Network(GNN)在医疗AI领域改善气道分割漏检问题的创新应用。通过分析3D UNet等传统方法的局限性,揭示了GNN在图结构建模中的独特优势,特别是在捕捉细小末梢支气管方面的突破性表现。文章详细介绍了UNet-GNN混合架构的设计原理、实验性能对比及优化方向,为CT影像分析提供了新思路。

weixin_30379531的博客 224

【Docker安装】Ubuntu 24.04.2 LTS系统下安装Docker环境——指定APT源安装方式

【Docker安装】Ubuntu 24.04.2 LTS系统下安装Docker环境——指定APT源安装方式

jks212454的博客 625
上一篇: UVa679 完全二叉树编号
下一篇: 01-复杂度1 最大子列和问题(20 分)
peterchen96
博客等级 码龄10年 6粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值