B - 数据结构实验之查找二:平衡二叉树

ROS2前置基础教程 | 小鱼教你用CMake依赖查找流程 上面我们用g++、make、cmake三种方式来编译ros2的C++节点。用cmake虽然成功了,但是CMakeLists.txt的内容依然非常的臃肿,我们需要将其进一步的简化。将上面的CmakLists.txt改成下面的样子 接着继续生成和编译 是不是非常的神奇,为什么可以浓缩成那么短的几句指令呢?find_package查找路径对应的环境变量如下。 打开终端,输入指令: 结果 观察PATH变量,你会发现赫然在其中,中的路径如果以或结尾,则自动回退到上一级目录,接着检查这些目录下的 cmake找到这些目录 阅读详情

Description

根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。

Input

输入一组测试数据。数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。

Output

输出平衡二叉树的树根。

Sample

Input
5
88 70 61 96 120

Output
70

理解不上可以画图试试

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

typedef struct node
{
    int data,deep;
    node *l,*r;
}Tree;

//求深度
int Deep(Tree *root)
{
    if(!root)
        return -1;
    else
        return root->deep;
}

//返回新的深度值
int New_Deep(Tree *p)
{
    return max(Deep(p->l),Deep(p->r))+1;
}

//当深度差大于1发生在左子树的左孩子
//单向右旋
Tree* LL(Tree *root)
{
    Tree *p = root->l;
    root->l = p->r;
    p->r = root;
    p->deep = New_Deep(p);
    root->deep = New_Deep(root);
    return p;
}

//发生在右子树的右孩子
//单向左旋
Tree* RR(Tree *root)
{
    Tree *p = root->r;
    root->r = p->l;
    p->l = root;
    p->deep = New_Deep(p);
    root->deep = New_Deep(root);
    return p;
}

//发生在左子树的右孩子
Tree* LR(Tree *root)
{
    root->l = RR(root->l);
    return LL(root);
}

//发生在右子树的左孩子
Tree* RL(Tree *root)
{
    root->r = LL(root->r);
    return RR(root);
}

//建立平衡二叉树
//每插入一个数据就要判断是否平衡
Tree* creat_Tree(Tree *root, int key)
{
    //根为空直接建立并初始化
    if(!root)
    {
        root = new Tree;
        root->deep = 0;
        root->data = key;
        root->l = root->r = NULL;
    }
    else
    {
        if(key < root->data)
        {
            //左子树插入
            root->l = creat_Tree(root->l, key);
            //判断
            if(Deep(root->l)-Deep(root->r) > 1)
            {
                //平衡
                if(key < root->l->data)
                    //左子树的左孩子
                    root = LL(root);
                else
                    //左子树的右孩子
                    root = LR(root);
            }
        }
        else
        {
            //右子树插入
            root->r = creat_Tree(root->r, key);
            //判断
            if(Deep(root->r)-Deep(root->l) > 1)
            {
                if(key > root->r->data)
                    //右子树右孩子
                    root = RR(root);
                else
                    //右子树左孩子
                    root = RL(root);
            }
        }
    }
    root->deep = New_Deep(root);
    return root;
}

int main()
{
    int n,x;
    cin>>n;
    Tree *root = NULL;
    for(int i=0;i<n;i++)
    {
        cin>>x;
        root = creat_Tree(root, x);
    }
    cout<<root->data<<endl;
    return 0;
}

(2-2-2)位置控制算法:常用的位置控制算法(2) 例如下面是一个使用滑模控制算法实现机器人位置控制的例子,在该例子中,假设机器人在一维空间中移动,目标是使机器人的位置迅速、鲁棒地达到设定的目标位置。自适应控制算法通过实时地调整控制器参数,可以适应系统的变化,从而提高系统的鲁棒性和性能。模型预测控制(Model Predictive Control,MPC)是一种先进的控制策略,通常应用于动态系统,以实现对系统状态的优化控制。(6)迭代优化:随着时间推移,MPC迭代执行上述步骤,持续优化控制输入,以适应系统动态和外部扰动,实现对系统状态的稳健控制。 阅读详情

相关推荐

三菱A800变频器矢量控制实战:从速度控制到位置控制的PLG参数设置全解析

本文深入解析了三菱A800变频器结合FR-A8AP选件板与PLG(脉冲编码器)实现高精度矢量控制的实战应用。详细阐述了从速度控制、转矩控制到位置控制三种高级模式的切换逻辑、核心参数设置及硬件接线要点,帮助工程师充分发挥A800变频器的闭环控制潜力,应对复杂工业自动化场景。

weixin_28308325的博客 326

数据结构实验之查找二:平衡二叉树

Problem Description 根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。 Input 输入一组测试数据。数据的第1行给出一个正整数N(n &amp;amp;amp;lt;= 20),N表示输入序列的元素个数;第2行给出N个正整数,按数据给定顺序建立平衡二叉树。 Output 输出平衡二叉树的树根。 Sample Input 5 88 70 61 96 120 Sample Output ...

命运只负责洗牌,但玩牌的是我们自己。 227

AI写作:为AI人工智能领域赋能

AI写作技术作为自然语言处理(NLP)领域的重要应用方向,正在深刻改变内容创作的方式。系统介绍AI写作的技术原理分析主流AI写作模型的架构特点提供实践性的代码示例探讨实际应用中的关键问题展望未来发展趋势本文涵盖从基础理论到高级应用的完整知识体系,适用于希望深入了解AI写作技术的开发者和研究人员。背景介绍:建立基本概念框架核心概念:解析关键技术原理算法实现:通过代码演示具体实现数学原理:深入底层数学模型实践应用:展示真实场景案例资源推荐:提供学习路径和工具。

AI天才研究院 3052

平衡二叉树

Time Limit: 400MS Memory limit: 65536K 题目描述 根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。 输入 输入一组测试数据。数据的第1行给出一个正整数N(n 输出 输出平衡二叉树的树根。 示例输入 5 88 70 61 96 120 示例输出 70

心の コード 644

【示波器专题】示波器探头的原理深入——有源探头之单端有源探头

由于接地环路的苛刻要求,更高带宽的单端有源探头就算设计了也不实用。因此单端有源探头的带宽一般在6GHz以内,更高带宽的信号测量也只能使用差分有源探头(市面上有些型号的差分探头可同时兼顾单端测试)。......

一点硬件 2144

网规第三版:第4章网络资源设备(完结)

第 4 章 网络资源设备 调整内容: 更新主流网络设备(交换机、路由器、防火墙)的技术参数与选型标准 增加国产化网络设备与信创产品的相关内容 精简已淘汰的设备类型与技术指标

鹿鸣天涯 267

b - 数据结构实验之查找二:平衡二叉树_二叉树、平衡二叉树、红黑树、B树、B+树与B*树...

一、二叉树1️⃣二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图:基于二叉查找树的这种特点,在查找某个节点的时候,可以采取类似于二分查找的思想,快速找到某个节点。n 个节点的二叉查找树,正常的情况下,查找的时间复杂度为 O(logN)。之所以说是正常情况下,是因为二叉查找树有可能出现一种极端的情况,例如:这种情况也是满足二叉查找树的条件,然而,此时的二叉查找树已经...

weixin_34194499的博客 113

PDAF相位对焦原理

pdaf光路图

camerall 1万+

b - 数据结构实验之查找二:平衡二叉树_文件系统的灵魂数据结构 B树

其实平衡二叉树的代码实现已经挺复杂的了,但是一山更比一山高,B树算法的原理和代码实现都比平衡二叉树要更为复杂。我没有让大家知难而退的意思,面试的时候肯定不会让你写B树这么复杂的算法,大家先听我讲讲B树这种数据结构的思想吧。一看文章标题就知道B树与文件系统的实现有很大关系,这个还是挺重要的。代码实现可能后面我会补上,其实意义也不大,真的先声明一点:B-tree树即B树。B即Balanced...

weixin_39755853的博客 194

157、飞控中的鲁棒自适应控制

本文总结了飞控系统中鲁棒自适应控制的实践经验。作者通过炸机案例引出传统PID控制的局限性,分析了鲁棒性与自适应性的本质矛盾,提出"用鲁棒性兜底,用自适应性提性能"的设计原则。重点介绍了模型参考自适应控制(MRAC)的实现方法,包括参考模型设计、自适应律调参技巧(建议初始增益设为0.01)、直接/间接自适应的应用场景差异,以及防止参数漂移的鲁棒修正方法。文章还分享了实际调试中的三大关键问题(初始值设定、激励条件、执行器饱和)及解决方案,并推荐了"鲁棒PID+自适应前馈"的混合架构。最后强调调试顺序应为先保证鲁

2401_88858637的博客 27

基于C++的MMC仿真与PSCAD建模

MMC是一种基于模块化设计的多电平换流器,通常由若干个基本单元(子模块)组成。每个子模块包含一个电容和两个开关,通过控制开关的开闭,实现输出电压的级联和多电平化。高效率:由于开关频率较低,开关损耗小,效率高。高可靠性:模块化设计使得故障模块易于更换,提高了系统的可靠性。灵活扩展:可以通过增加或减少子模块的数量,方便地调整输出电压和功率。PSCAD(Power Systems Computer Aided Design)是广泛应用于电力系统仿真的专业软件,具有强大的建模和仿真能力。

qq_38334677的博客 295

b - 数据结构实验之查找二:平衡二叉树_彻底搞明白这些:二叉树、平衡二叉树、BTree、B+Tree...

点击上方“匠心零度”,选择“设为星标”做积极的人,而不是积极废人来源 | https://www.cnblogs.com/zhoujinyi/p/13900554.html背景一般说MySQL的索引,都清楚其索引主要以B+树为主,此外还有Hash、RTree、FullText。本文简要说明一下MySQL的B+Tree索引,以及和其相关的二叉树、平衡二叉树、B-Tree,相关的知识网上很多...

weixin_27188815的博客 126

【头歌】链栈的基本操作及应用

另外,在算法的开始和结束时,栈都应该是空的,所以匹配到最后还要判断栈是否为空,若空,则说明匹配成功,返回1。其中表达式只包含三种括号,花括号{}、中括号[]、圆括号(),即它仅由 (、)、[、]、{、}六个字符组成。预期输出: 栈中元素依次为:12 47 5 8 6 92 45 63 75 38 4 29 弹出的栈顶元素 e=29 栈空否:0(1:空 0:否) 栈顶元素 e=4 栈的长度为11 清空栈后,栈空否:1(1:空 0:否)// 若栈不空,则用e返回S的栈顶元素,并返回OK;

qq_39977056的博客 4383

数据结构实验之查找二:平衡二叉树【OJ--3374】

题目描述 根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。 输入 输入一组测试数据。数据的第1行给出一个正整数N(n 数,按数据给定顺序建立平衡二叉树。 输出 输出平衡二叉树的树根。 示例输入 5 88 70 61 96 120 示例输出 70 #include #include #inclu

zhang_di233的专栏 2239

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SDUT3374数据结构实验之查找二:平衡二叉树

数据额结构查找表的难题 详细参考课本,总之就是四种旋转 LL RR LR RL 后两种建立在前两种旋转的基础上。取孩子节点,把孩子节点的孩子节点连到夫节点的孩子节点,再把父节点连到孩子节点上。 甩代码 #include #include #include #include #include using namespace std; struct bt { int data,b;

nar666的博客 671

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: A - 数据结构实验之查找一:二叉排序树
下一篇: Day_1 建立数据库、类、用户登录页面
笑着找bug
博客等级 码龄7年 22粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值