博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AVL平衡树的插入例程
阅读量:5131 次
发布时间:2019-06-13

本文共 1141 字,大约阅读时间需要 3 分钟。

版权声明:长风原创 https://blog.csdn.net/u012846486/article/details/27787627

/***AVL平衡树插入例程**2014-5-30 11:44:50*/avlTree insert(elementType X, avlTree T){	if(T == NULL){		T = malloc(sizeof(struct avlTree));		if(T == NULL) fatalError("Out of space!!!");		T->element = X; T->height = 0;		T->left = T->right = NULL;	}else if(X < T->element){		T->left = insert(X, T->left);		if(height(T->left) - height(T->right) == 2){			if(X < T->left->element) 				T = singleRotateWithLeft(T);			else T = doubleRotateWithLeft(T);		}	}else if(X > T->element){		T->right = insert(X, T->right);		if(height(T->right) - height(T->left) == 2){			if(X > T->right->element)				T = singleRotateWithRight(T);			else T = doubleRotateWithRight(T);		}	}	/*--假设X已经存在。那么啥都不用做--*/		T->height = max(height(T->left), height(T->right)) + 1;	return T;}static position singleRotateWithLeft(position k2){	position k1 = k2-> left;		k2->left = k1->right;	k1->right = k2;		k2->height = max(height(k2->left), height(k2->right)) + 1;	k1->height = max(height(k1->left), k2->height) + 1;	return k1;}/*双右左旋就是先对T的右子树左单旋再对T本身右单旋*/static position

转载于:https://www.cnblogs.com/mqxnongmin/p/10861078.html

你可能感兴趣的文章
elastaticsearch
查看>>
postgreSQL 简单命令操作
查看>>
Spring JDBCTemplate
查看>>
Radon变换——MATLAB
查看>>
第五章笔记
查看>>
Iroha and a Grid AtCoder - 1974(思维水题)
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
[LeetCode] Palindrome Number
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
SQL更新某列包含XX的所有值
查看>>
网易味央第二座猪场落户江西 面积超过3300亩
查看>>
面试时被问到的问题
查看>>
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Bootstrap
查看>>
Node.js 连接 MySQL
查看>>