AVL
来源:互联网 发布:客户分布地图制作软件 编辑:程序博客网 时间:2024/06/06 02:38
template <typename Comparable>struct AvlNode{Comparable element;AvlNode *left;AvlNode *right;int height;AvlNode( const Comparable & theElement,AvlNode *lt, AvlNode *rt, int = 0 ):element(theElement),left(lt),right(rt),height(h){}}int height( AvlNode *t )const{return t == NULL ? -1 : t->height;}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->left->element )rotateWithLeftChild( t );elsedoubleWithLeftChild( t );}else if( t->element < x ){insert( x, t->right );if( height( t->right ) - height( t->left ) == 2 )if( t->right->element < x )rotateWithRightChild( t );elsedoubleWithRightChild( t );}else return;}void rotateWithLeftChild( AvlNode * &k2 ){AvlNode *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;k2 = k1;}void rotateWithrightChilf( AvlNode * & k1){AvlNode *k2 = k1->right;k2 ->left =k1;k1->right = k2->left;k1 = k2;}void doubleWithLeftChild( AvlNode * & k3 ){rotateWithChild( k3->left );rotateWithLeftChild( k3 );}void doubleWithRightChild( k3->left ){rotateWithRightChild( k3->left );rotateWithLeftChild( k3 );}
0 0
- avl
- avl
- {avl}
- AVL
- AVL
- AVL
- AVL
- AVL
- AVL
- AVL
- AVL
- HDU2193-AVL-数据结构-AVL
- AVL代码
- AVL Tree
- AVL树
- AVL树
- AVL树
- avl树
- hudson shell
- 【日常】2013简单总结 + 技术总结
- Java环境变量的配置
- Tomcat 7最大并发连接数的正确修改方法
- permanent gc
- AVL
- C++ Dll回调C#方法,Dll中要将字节数组传递给回调方法
- 让GC扫面持久区permanent generation
- Hadoop 归档 和HIVE 如何使用har 归档 文件
- http_load压测响应时间问题
- EasyUI 加入数字框
- Remove Nth Node From End of List
- erlang --进程生成测试
- BOOST Log 使用 Unicode