20120920-AVL树定义《数据结构与算法分析》
时间:2022-04-22
本文章向大家介绍20120920-AVL树定义《数据结构与算法分析》,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
AVL树节点声明:
1 struct AvlNode
2 {
3 Comparable element;
4 AvlNode *left;
5 AvlNode *right;
6 int height;
7
8 AvlNode( const Comparable & theElement,AvlNode *lt,AvlNode *rt,int h=0):element ( theElement),left(lt),right(rt),height(t)
9 };
计算节点高度:
1 int height( AvlNode * t) const
2 {
3 return t == NULL ? -1 : t->height;
4 }
向AVL中插入操作:
void insert( const Comparable & x,AvlNode * & t)
{
if(t == NULL)
t = new AvlNode ( x,NULL,NULL);
else if (x < t->element);
{
insert( x ,t->left);
if(height(t->left)-height(t->right) == 2)
if(x < t->element)
rotateWithLeftChild(t);
else
doubleWithLeftChild(t);
}
else if (t->element < x)
{
insert(x,t->right);
if(height(t->right) - height(t->left) == 2)
if(t->right->element < x)
rotateWithLeftChild(t);
else
doubleWithLeftChild(t);
}
else
;
t->height = max(height(t->left),height(t->right))+1;
}
执行单旋转过程:
1 void rotateWithLeftChild(AvlNode * & k2)
2 {
3 AvlNode *k1 = k2->left;
4 k2->left = k1->right;
5 k1->right = k2;
6 k2->height = max(height(k2->left),height(k2->right))+1;
7 k1->height = max(height(k1->left),height(k1->right))+1;
8 k2=k1;
9 }
执行双旋转过程:
void doubleWithLeftChild( AvlNode * & k3)
{
rotateWithLeftChild(k3->left);
rotateWithLeftChild(k3);
}
- shell获取每月最后一天
- 定向转发和重定向实现 <select >下拉表单数据传送
- Python:获取某月第一天和最后一天
- hdu 3635 Dragon Balls (带权并查集)
- 沃趣QFusion vs MGR、MGC面面观
- Redis的配置、启动、操作及关闭
- 剖析Go编写的Socket服务器模块解耦及基础模块的设计
- hdu 3172 Virtual Friends (映射并查集)
- Vue 大法好
- Python:ip地址处理模块
- Oracle 12c系列(四)|资源隔离之IO、内存、CPU
- Python:gethostbyname获取本地ip地址
- Oracle 12c系列(五)|PDB Refresh
- hdu 2473 Junk-Mail Filter (并查集之点的删除)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 为什么我的Redis这么“慢”?
- Nginx系列:数据压缩
- Ray,面向新兴AI应用的分布式框架
- 60.Vue export default 和 export 的使用方式
- Idea开发maven插件
- redis实战 migrate异常NOAUTH Authentication required.
- linux内存使用情况分析(free + top)
- Centos7 python3安装
- crontab JAVA_HOME not found
- Centos7 源码安装mysql5.6
- mysql登录时报socket找不到终极解决方案
- Grafana将数据库由sqlite3改为mysql
- Python自学成才之路 带有参数的装饰器
- Grafana 将默认的元数据库 sqlite 改为 mysql
- 使用IDEA整合spring4+spring mvc+hibernate