向AVL树进行插入的非递归函数
来源:互联网 发布:淘宝分类最多几个 编辑:程序博客网 时间:2024/06/05 19:22
根据书上的递归版本试着实现非递归版,关键是找到该插入的树叶的位置。(待更正)
AvlTree Insert(ElementType X, AvlTree T){ AvlTree Tmp = T; if(T == NULL) { T = malloc(sizeof(struct AvlNode)); if(T == NULL) FatalError("Out of space!!!"); else { T->Element = X; T->Height = 0; T->Left = T->Right = NULL; }} while(!(Tmp->Left == Tmp->Right == NULL)) { if(X < Tmp->Element) Tmp = Tmp->Left; if(X > Tmp->Element) Tmp = Tmp->Right; } else if(X < Tmp->Element) { Tmp->Left = X; if(Height(Tmp->Left) - Height(T->Right) == 2) if(X < Tmp->Left->Element) Tmp = SingleRotateWithLeft(Tmp); else Tmp = DoubleRotateWithLeft(Tmp); else if(X > Tmp->Element) { Tmp->Right = X; if(Height(Tmp->Right) - Height(T->Left) == 2) if(X < Tmp->Right->Element) Tmp = SingleRotateWithRight(Tmp); else Tmp = DoubleRotateWithRight(Tmp); } T->Height =Max(Height(T->Left), Height(T->Right)) + 1; return T;}
0 0
- 向AVL树进行插入的非递归函数
- AVL树进行插入的非递归函数
- C语言 AVL树的 非递归 方法插入
- AVL树的基本操作之插入(递归与非递归编码)(2)
- AVL树插入例程非递归实现C语言
- AVL树非递归实现插入和删除例程
- AVL平衡树插入非递归实现 C语言
- AVL树C++实现以及(递归函数)非递归改进
- AVL树的插入与删除(均为递归实现)
- AVL(平衡树)C++代码(非递归)
- 二叉树中插入节点的递归与非递归
- 算法-AVL树的插入
- AVL树的插入操作
- AVL树的插入算法
- Treap树非递归插入
- 转载 AVL(平衡树)C++代码(非递归)
- 【AVL树】AVL树的插入操作以及旋转
- 二叉树的非递归插入和遍历
- 程序员技术练级攻略
- 关于图片处理
- IOS中启动APP的时候,启动图片全屏,app完成启动之后显示状态栏
- 深入分析 Linux 内核链表
- 线性插值 C实现
- 向AVL树进行插入的非递归函数
- Python中使用stanford parser(一)
- JS命名规范
- rpm SPEC常用路径以及宏变量
- 数据结构基础(18) --哈希表的设计与实现
- ArcGIS Python Hello Python
- 深入理解Android的startservice和bindservice
- 第二章 VHDL语言元素
- iOS 手写代码UICollectionView