二叉排序树
2012-09-05 10:58
253 查看
一.二叉排序树
二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树:
1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
3. 它的左、右子树也分别为二叉排序树。
1. 二叉树的存储结构
typedef
struct BiTre{
int key;
struct BiTre *lchild,*rchild;
}BiNode,*BiTree;
2. 在二叉排序树中按值查找一个节点
在二元排序树b中查找x的过程为:
1. 若b是空树,则搜索失败,否则:
2. 若x等于b的根节点的数据域之值,则查找成功;否则:
3. 若x小于b的根节点的数据域之值,则搜索左子树;否则:
4. 查找右子树。
1. 在二叉排序树插入结点
向一个二叉排序树b中插入一个结点s的算法,过程为:
1. 若b是空树,则将s所指结点作为根结点插入,否则:
2. 若s->data等于b的根结点的数据域之值,则返回,否则:
3. 若s->data小于b的根结点的数据域之值,则把s所指结点插入到左子树中,否则:
4. 把s所指结点插入到右子树中。
1. 建立二叉树和中序输出二叉树
1. 二叉树删除节点
二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树:
1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
3. 它的左、右子树也分别为二叉排序树。
1. 二叉树的存储结构
typedef
struct BiTre{
int key;
struct BiTre *lchild,*rchild;
}BiNode,*BiTree;
2. 在二叉排序树中按值查找一个节点
在二元排序树b中查找x的过程为:
1. 若b是空树,则搜索失败,否则:
2. 若x等于b的根节点的数据域之值,则查找成功;否则:
3. 若x小于b的根节点的数据域之值,则搜索左子树;否则:
4. 查找右子树。
//查找某个值的节点 void SearchNode(BiTree T,int key,BiTree &t) { if(T->key = key) { t = T; return ; } else { if(!T) { return ; } else { if(key < T->key) SearchNode(T->lchild,key,t); else SearchNode(T->rchild,key,t); } } }
1. 在二叉排序树插入结点
向一个二叉排序树b中插入一个结点s的算法,过程为:
1. 若b是空树,则将s所指结点作为根结点插入,否则:
2. 若s->data等于b的根结点的数据域之值,则返回,否则:
3. 若s->data小于b的根结点的数据域之值,则把s所指结点插入到左子树中,否则:
4. 把s所指结点插入到右子树中。
//二叉排序树的按值插入一个节点 void InsertNode(BiTree& T,int key) { BiNode* P = T; if(!T) { BiNode* bNode = new BiNode; bNode->key = key; bNode->lchild = NULL; bNode->rchild = NULL; T = bNode; // return 0; }else { if(key < P->key) InsertNode(P->lchild,key); else InsertNode(P->rchild,key); } }
1. 建立二叉树和中序输出二叉树
//建立二叉树 int CreateBiTree(BiTree& T) { int k = 1; cin >> k; while(k) { InsertNode(T,k); cin >> k; } return 0; } //中序输出二叉排序树 void PrintAllNode(BiTree T) { if(T) { PrintAllNode(T->lchild); printf("%d ",T->key); PrintAllNode(T->rchild); } }
1. 二叉树删除节点
相关文章推荐
- //二叉树的(二叉排序树)建立和先序遍历
- 使用二叉排序树构造键值映射
- 二叉排序树的删除
- 二叉排序树,平衡二叉树,Treap平衡树的实现-转帖
- 二叉排序树1
- 二叉排序树中删除一个节点
- 二叉排序树的简单实现
- 编写判断给定二叉树是否为二叉排序树的函数
- 数据结构_查找_静态查找数表_二叉排序树
- 二叉排序树的增删改操作(修改删除)
- 二叉查找树(二叉排序树)的详细实现C版
- 完整详尽的二叉排序树性质及源码和注释 C语言 可直接运行
- 《算法导论》12章二叉排序树BST
- 找出二叉排序树中满足某一条件的节点
- 算法导论-二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 九度OJ1467题目1467:二叉排序树
- 数据结构_查找_动态查找表_二叉排序树