二叉排序树(二叉搜索树,BST)的使用
来源:互联网 发布:淘宝网童装女童外套 编辑:程序博客网 时间:2024/05/10 07:13
/** * 输入一系列整数,建立二叉排序树, * 并进行前序、中序、后序遍历。 * 不计入重复元素。 * 方法:注意二级指针的使用, * 相当于引用一级指针, * 被调函数能改变调用函数的变量。 */#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct treeNode { int dat; struct treeNode * lch, * rch;} treeNode_t;void BST_insert(treeNode_t ** pp, int keyVal) { treeNode_t * pNew; if (*pp == NULL) { pNew = (treeNode_t *)malloc(sizeof (treeNode_t)); pNew->lch = NULL; pNew->rch = NULL; pNew->dat = keyVal; *pp = pNew; } else if (keyVal < (*pp)->dat) { BST_insert(&((*pp)->lch), keyVal); } else if (keyVal > (*pp)->dat) { BST_insert(&((*pp)->rch), keyVal); }}void visit(treeNode_t * p) { printf("%d ", p->dat);}void preOrder(treeNode_t * p, void (* pVis)(treeNode_t *)) { if (p == NULL) return; (*pVis)(p); preOrder(p->lch, pVis); preOrder(p->rch, pVis);}void inOrder(treeNode_t * p, void (* pVis)(treeNode_t *)) { if (p == NULL) return; inOrder(p->lch, pVis); (*pVis)(p); inOrder(p->rch, pVis);}void postOrder(treeNode_t * p, void (* pVis)(treeNode_t *)) { if (p == NULL) return; postOrder(p->lch, pVis); postOrder(p->rch, pVis); (*pVis)(p);}void BST_destroy(treeNode_t ** pp) { if (*pp) { BST_destroy(&((*pp)->lch)); BST_destroy(&((*pp)->rch)); free(*pp); //*pp = NULL; }}void main() { int n, m; treeNode_t * pTree = NULL; while (scanf("%d", &n) == 1) { pTree = NULL; //!!!初始化为空树 while (n--) { scanf("%d", &m); BST_insert(&pTree, m); } preOrder(pTree, visit); putchar('\n'); inOrder(pTree, visit); putchar('\n'); postOrder(pTree, visit); putchar('\n'); BST_destroy(&pTree); }}
0 0
- 二叉排序树(二叉搜索树,BST)的使用
- 二叉排序树(二叉搜索、查找树)(BST树)
- 二叉 搜索/查找 树、二叉排序树、BST
- 二叉搜索树(二叉排序树,二叉查找树)BST
- 二叉查找树/二叉排序树/二叉搜索树----> BST
- 二叉查找树(二叉排序树)的详细实现(BST)
- 二叉搜索树;二叉查找树;二叉排序树;binary search tree(BST)
- 二叉查找树(二叉排序树)BST解析
- C++ 二叉排序树BST(二叉查找树)
- 搜索二叉树(BST)的实现
- 二叉排序树(BST)/二叉查找树的建立(BST是笔试面试的常客)
- 二叉排序树(BST)/二叉查找树的建立(BST是笔试面试的常客)
- *BST(二叉搜索树)
- 二叉搜索树(BST)
- 二叉排序树(二叉搜索树)
- 二叉排序树(二叉搜索树)
- 二叉搜索树(二叉排序树)
- 二叉搜索树(二叉排序树)
- SetTimer()、OnTime()、KillTimer()函数关系
- Cocos2dx引擎笔记——综述
- treemap
- hdu1466(dp)
- 面试题
- 二叉排序树(二叉搜索树,BST)的使用
- android客户端调用接口与服务器端交互 如何保持session
- HDU5095
- 分支结构:(Day-2)
- 如何裁剪YUV420图像,抓取指定区域,制作方形视频,模仿Instagram
- HDU5095
- ORA-01810格式代码出现两次 问题解决
- hashmap
- Internet应用简介和使用学习工具总结