查找算法【平衡二叉树】 - 平衡二叉树的创建

平衡二叉树的创建和二叉查找树的创建类似,只是插入操作多了调整平衡而已。

可以从空树开始,按照输入关键字的顺序依次进行插入操作,最终得到一棵平衡二叉树。

【算法步骤】

① 初始化平衡二叉树为空树,T=NULL。

② 输入一个关键字x ,将x 插入平衡二叉树T中。

③ 重复步骤2,直到关键字输入完毕。

【举个栗子】

例如,依次输入关键字(25,18,5,10,15,17),创建一棵平衡二叉树。

① 输入25,将平衡二叉树初始化为空,所以将25作为树根,左右子树为空,如下图所示。

② 输入18,插入平衡二叉树。与树根25做比较,比25小,到左子树中查找,左子树为空,插入此位置,检查祖先未发现失衡,如下图所示。

③ 输入5,将其插入平衡二叉树中。与树根25做比较,比25小,到左子树中查找,比18小,到左子树中查找,左子树为空,插入此位置。25节点失衡,从不平衡节点到新节点路径前两个是LL,做LL型旋转调整平衡,如下图所示。

④ 输入10,将其插入平衡二叉树中。与树根18做比较,比18小,到左子树中查找,与树根5做比较,比5大,到右子树中查找,右子树为空,插入此位置,检查祖先未发现失衡。如下图所示。

⑤ 输入15,将其插入平衡二叉树中。与树根18做比较,比18小,到左子树中查找,与树根5做比较,比5大,到右子树中查找,与树根10做比较,比10大,到右子树中查找,右子树为空,插入此位置。5节点失衡,从不平衡节点到新节点路径前两个是RR,做RR型旋转调整平衡,如下图所示。

⑥ 输入17,将其插入平衡二叉树中。经查找之后(过程省略),将其插入15的右子树位置。18节点失衡,从不平衡节点到新节点路径前两个是LR,做LR型旋转,如下图所示。

【算法实现】

AVLTree CreateAVL(AVLTree &T){int n , x;cin >> n;for(int i = 0 ; i < n ; i++){cin >> x;T = Insert(T , x);}return T;
}

查找算法【平衡二叉树】 - 平衡二叉树的创建相关推荐

  1. 查找算法【平衡二叉树】 - 平衡二叉树的删除

    查找算法[平衡二叉树] - 平衡二叉树的删除 在平衡二叉树中进行插入操作时只需从插入节点之父向上检查,发现不平衡便立即调整,调整一次平衡即可:而进行删除操作时需要一直从删除节点之父向上检查,发现不平衡 ...

  2. 数据结构与算法——图解平衡二叉树及代码实现

    平衡二叉树介绍 平衡二叉树,是一种二叉排序树,其中每一个节点的左子树和右子树的高度差最多等于1.由3位科学家共同发明,用他们首字母命名 又被称为AVL树.从平衡二叉树的名称,你也可以体会到它是一种高度 ...

  3. 3374——数据结构实验之查找二:平衡二叉树

    数据结构实验之查找二:平衡二叉树 ( LL RR LR RL) Problem Description 根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根. Input 输入一组测试数据 ...

  4. SUTD OJ 数据结构实验之查找二:平衡二叉树

    数据结构实验之查找二:平衡二叉树 Time Limit: 400 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 根据给 ...

  5. 查找算法【二叉查找树】 - 二叉查找树的创建

    查找算法[二叉查找树] - 二叉查找树的创建 二叉查找树的创建可以从空树开始,按照输入关键字的顺序依次进行插入操作,最终得到一棵二叉查找树. [算法步骤] ① 初始化二叉查找树为空树,T =NULL: ...

  6. 【数据结构】查找算法

    文章目录 查找算法 顺序查找算法 折半查找 分块查找 二叉排序树 平衡二叉树(AVL树) 散列表 哈希函数的构造 处理冲突的方法 哈希查找算法及其实现 查找算法 查找:在数据集合中寻找满足某种条件的数 ...

  7. 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21

    大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 211 第 ...

  8. 第29讲 常见算法(查找算法、递归算法、排序算法)

    文章目录 查找算法 1. 基本查找 2. 二分查找 3. 插值查找 4. 斐波那契查找 5. 分块查找 6. 哈希查找 7. 树表查找 递归算法 排序算法 1. 冒泡排序 2. 选择排序 3. 插入排 ...

  9. 查找算法及其时间复杂度

    一.顺序查找 条件:无序或有序队列. 原理:按顺序将查找元素与每个元素比较,直到找到查找元素为止. 时间复杂度:O(n) int SequenceSearch(int arr[], int value ...

最新文章

  1. 密码流 PassWord.java
  2. 妙用0元素数组 实现大小可变结构体
  3. js 用正则表达式模仿SQL like % 的模糊匹配
  4. Spring集成–配置Web服务客户端超时
  5. php ajax json 实例,php+ajax+json 详解及实例代码
  6. 面向业务的立体化高可用架构设计
  7. 扩展GeoServer数据源
  8. 按学号查找学生信息 用c语言表达,学生信息管理系统C语言编程.docx
  9. Twaver-HTML5基础学习(7)Layer图层元素
  10. 什么是rpm -ivh
  11. Android8.0 Fingerprint指纹启动流程详细分析
  12. # Maven错误Error executing Maven
  13. 【Leetcode】Customers Who Never Order
  14. “内鬼”作祟,国内知名游戏公司被黑
  15. 高斯消元法原理及模板
  16. 关于高精地图-导航电子地图制作测绘资质的讯息分享
  17. 【JavaScript】懒加载
  18. 制作DeepLabV3Plus训练集
  19. 数据通信是计算机网络最基本功能,计算机网络最基本的功能是数据通信和()。A.打印文件B.文件调用C.降低成本D.资源共享...
  20. 注册表删除卸载列表中的软件

热门文章

  1. php网页转html网页怎么弄
  2. uniapp 实现验证码输入框
  3. USB接口鼠标接触不良的简单处理
  4. 深度学习:长短期记忆模型LSTM
  5. 华为刀片服务器系统安装,FusionServer Pro E9000融合架构刀片服务器
  6. axis2 webService开发 附深入理解 Java 垃圾回收机制
  7. carla学习笔记(九)
  8. 谷歌浏览器(Google Chrome)官方下载
  9. linux安装VNC远程桌面环境
  10. Lua(二)数据类型+变量