二叉排序树

Posted t----j

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉排序树相关的知识,希望对你有一定的参考价值。

一.二叉排序树的结点类型

typedef struct node{
KeyType key;
struct node lchild,rchild;
}BSTNode;
typedef int KeyType;

二.SearchBST(T, key)

1.伪代码

SearchBST(BSTNode *T,KeyType K)
{
if(T为空||T的Key等于K){
Return T;
}
if(T的Key小于K){
Return searchBST(T的右孩子,K);
}else{
Return searchBST(T的左孩子,K);
}
}

2.代码

SearchBST(BSTNode *T,KeyType k)
{
if(T == NULL||T->key == K){
return T;
}
if(T->key<K){
return searchBST(T->rchild,K);
}else{
return searchBST(T->lchild, K);
}
}

三.InsertBST(T, key)

1.伪代码

int InsertBST(BSTNode *T,KeyType k)
{
if(T为空){
建立一个新结点K;
T的Key等于K;
T的左右孩子都为空;
return 1;
}
if(T的Key等于K){
return 0;
}
if(T的Key<K){
return InsertBST(T的右孩子,K);
}else{
return InsertBST(T的左孩子,K);
}
}

2.代码

int InsertBST(BSTNode *T,KeyType k)
{
if(T == NULL){
T= new BSTNode;
T->key = k;
T->lchild=NULL;
T->rchild=NULL;
return 1;
}
if(T->key==K){
return 0;
}
if(T->Key<K){
return InsertBST(T->rchild,K);
}else{
return InsertBST(T->lchild,K);
}
}

四.CreateBST(T)

1.伪代码

BSTNode Creat(int n)
{
建立一个为空的头指针;
循环着插入结点;
return T;
}

2.代码

BSTNode Creat(int n)
{
BSTNode T=NULL;
int i,a;
for(i=0;i<n;i++){
cin>>a;
insertBST(T,a);
}
return T;
}
技术图片

五.DeleteBST(T, key)

注意点:
1.树是否为空
2.T->key<k,递归删除右子树为K的结点。
3.T->key>k,递归删除左子树为K的结点。
4.删除结点并不是单纯的删除,而是用别的“东西”来替代原本的结点。

以上是关于二叉排序树的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法系列研究五——树二叉树三叉树平衡排序二叉树AVL

二叉排序树

二叉树二叉查找树

二叉排序树

二叉排序树和平衡二叉树

二叉排序树和平衡二叉树