非递归实现二叉查找树插入操作
2017-12-04 15:05
197 查看
首先应该完成一个查找操作,该函数将会返回查找路径上的最后一个结点。我们可以设置一个引用形参,然后将其指针保存并且返回。那么接下来的插入操作也比较容易实现了。
/*非递归查找二叉树*/ /*若找不到,则返回查找路径上最后一个结点*/ Status SearchBST_I(BSTree T,KeyType key,BSTree &p){ p = T; if(T == NULL) p = NULL; while(p){ if(p->data.key == key) return OK; else if(p->data.key > key){ if(p->lchild == NULL) break; p = p->lchild; } else if(p->data.key < key){ if(p->rchild == NULL) break; p = p->rchild; } } return ERROR; } /*非递归二叉查找树插入操作*/ Status InsertBST_I(BSTree &T,KeyType key){ BSTree p,n; if(SearchBST_I(T,key,p) == OK) return ERROR; //找到了,则不会插入 else{ n = (BSTree)malloc(sizeof(BSTNode)); if(n == NULL) return OVERFLOW; n->lchild = NULL; n->rchild = NULL; n->data.key = key; if(!p) T = n; else{ if(p->data.key < key) p->rchild = n; else p->lchild = n; } } return OK; }
相关文章推荐
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- 算法导论中十二章C++实现二叉查找树建立,插入,删除,遍历操作
- 二叉查找树带父节点指针的创建,销毁,查找,删除,插入,找前驱后继,找最小值最大值(递归和非递归的实现)
- [数据结构]10.2实现binary search tree的查找和插入操作,用非递归的方法实现
- 非递归实现的bst的根插入操作
- 二叉查找树的实现(插入+递归调用)
- C++模板实现二叉查找树(一 树的数据结构定义与节点插入)
- php使用PDO事务配合表格读取大量数据插入操作实现方法
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- MySQL 如何实现插入时如果不存在则插入,如果存在则更新的操作?
- 文件夹文件遍历并插入数据库的操作,IO Directory File的递归操作
- java实现单向链表CRUD,反转,排序,查找倒数第k个元素,递归输出等操作
- java实现创建链表以及插入节点,查找结点,删除节点等操作
- (Java实现)二叉查找树--查找、删除、插入
- 非递归实现二叉查找树的后序遍历
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- 二叉查找树--查找、删除、插入(Java实现)
- c++实现循环单链表的相关操作(创建,插入,删除,保序插入,统计结点)
- 线性链表的定义与元素插入、删除的操作实现