树和二叉树5——树型查找I——BST
来源:互联网 发布:淘宝登不上去说有风险 编辑:程序博客网 时间:2024/05/30 04:41
(保留版权,欢迎转载。请注明原始链接:http://blog.csdn.net/markcnsc/article/details/8568822)
二叉搜索树(BST),平衡二叉树(AVL),红黑树,B*树和Tre树。
二叉搜索树(BST)
1. 定义
左子树上任意的值Kl <= 结点N的值Kn <= 右子树上任意的值Kr。
2. 性质
中序遍历BST,可得二叉树所有结点的值的非降序排列。
3. 操作
3.1. 声明
typedef struct _BST { struct _BST *lc, *rc; int k;} BST;
3.2 查找
BST* Search (BST* p, int v){ while (p && p->k != v) p = p->k > v ? p->lc : p->rc; /*while (p)//strictly, more efficient! if (p->k > v) p = p->lc; else if (p->k < v) p = p->rc; else break;*/ return p;}
3.3 插入
BST* Insert (BST** p, int v){ while (*p && (*p)->k != v) p = (*p)->k > v ? &(*p)->lc : &(*p)->rc; if (!*p) { if(!(*p = malloc (sizeof(BST)))) exit (-1); (*p)->k = v; (*p)->lc = (*p)->rc = 0; } return *p;}
3.4 删除
int Delete (BST** p, int v){ BST* q; while (*p && (*p)->k != v) p = (*p)->k > v ? &(*p)->lc : &(*p)->rc; if (!(q = *p)) return -1; if (!(*p)->lc || !(*p)->rc) { *p = (*p)->lc ? (*p)->lc : (*p)->rc; } else {/* also OK exchange lc <-> rc */ for (p = &(*p)->lc; (*p)->rc; p = &(*p)->rc); q->k = (*p)->k; q = (*p); *p = (*p)->lc; } free (q); return 0;}
3.5 实例
int main (int argc, char** argv){ BST* h = NULL;/*Initilization! Or Coredump.*/ int data[] = {38, 55, 64, 78, 35, 99, 32, 67, 88}; int i, n, r; for (i = 0; i < sizeof(data)/sizeof(data[0]); i ++) { Insert (&h, data[i]); } while (1) { printf ("input num:\n"); scanf ("%d", &n); r = Delete (&h, n); printf ("%d -- %s\n", n, r ? "None" : "Found and Removed"); } return 0;}
- 树和二叉树5——树型查找I——BST
- java——二叉查找树(BST)算法
- BST二叉查找树
- BST二叉查找树
- 二叉查找树 BST
- BST二叉查找树
- 二叉查找树BST
- 二叉查找树BST
- BST二叉查找树
- BST-二叉查找树
- 二叉查找树(BST)
- 二叉查找树(BST)
- 二叉查找树(BST)
- 二叉查找树(BST)
- 二叉查找树(BST)
- 二叉查找树BST和红黑树,果然。。。
- 二叉查找树(BST)和平衡二叉查找树(AVL)
- 二叉查找树(BST)
- 单片机以太网控制芯片W7100A数据手册(一)
- selinux android setool 工具
- POCO C++库学习和分析 -- Foundation库的结构
- Java正则表达式入门
- 即时通讯开发平台AnyChat中的UPNP详解
- 树和二叉树5——树型查找I——BST
- 性能测试总结之内存泄露和内存溢出
- 避免CSS初学者常犯的那些错误
- JAVA 取得起止日期间的天数集合
- minSdkVersion、targetSdkVersion、targetApiLe
- LLVM每日谈之八 PASS例子分析
- SetWindowRgn函数应用--截图,绘制多边形窗体
- select 函数用法--续
- webview加载页面及前进、后退、刷新操作