首页 > 代码库 > 二叉排序树
二叉排序树
二叉排序树(Binary Sort Tree):或者是一颗空树,或者是具有以下性质的树:(1)若它的左子树不空,则左子树上所以结点的值均小于它的根节点的值;(2)若它的右子树不空,则右子树上的所以结点的值均大于它的根节点的值;(3)它的左、右子树也分别是二叉排序树。
二叉排序树的基本操作均可以在O(h)时间内完成(算法导论p165)。
相关操作代码如下:
int InsertBST(BiTree &T, int key)//递归插入 { if (T == NULL) { T = new BiNode; T->data = http://www.mamicode.com/key;>测试代码:int main() { const int n = 10; int a[n] = {3, 2, 8, 6, 1, 4, 5, 7, 1, 3}; BiTree T; CreateBST(T, a, n); InOrderTraverse(T); cout << endl; BiNode *p; for (int i = 1; i < 10; i++) { p = SearchBST_(T, i); if (p != NULL) cout << p->data << endl; } int b[5]={0, 2, 6, 1, 7}; int ret; for (int i = 0; i < 5; i++) { ret = DeleteBST(T, b[i]); if (ret == 0) cout << "删除 " << b[i] << " 失败" << endl; else { cout << "删除 " << b[i] << " 后: " ; InOrderTraverse(T); cout << endl; } } DestoryBST(T); getchar(); return 0; }参考:数据结构C语言版、算法导论(关于删除结点操作,该书p173页有注记)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。