二叉排序树的实现

2021-02-12 04:17

阅读:368

标签:==   strong   nod   clu   int   出现   遇到   mic   调用   

1,伪代码部分

BSTree SearchBST(BSTree T,int key) 
{
   if (!T||key==T->date)  return T;
   else if(keydata.key)  retrun SearchBST(T->lchild,key) //递归
   else return SearchBST(T->rchild,key)
}
void InsertBST(BSTree &T,int e)
{
    新建一个二叉树 S;
    if (!T)  S = new BSTNode  S->data = e  令其左右孩子为空;
    else if (e>T->data) InsertBST(T->rchild,e) //递归
    else InsertBST(T->lchild,e);
}
   
void CreatBST(BSTree &T)
{
   T=NULL;   //令根节点为空
   int a[100];
   cin 
void DeleteBST(BSTree &T,int key) {
    BSTree p;
    p = SearchBST(T,key) //调用search函数
    if (p->lchild==NULL&&p->rchild==NULL) T=p=NULL;
    else BSTree T1; T1=p; T=p=NULL; 
         While(T1!=NULL)  InsertBST(T,T1->lchild->data) InsertBST(T,T1->child->data)
}

注意事项:

1,在实现删除key的操作时,需要考虑删除节点的子节点是否为空,空则直接删除,不空则要将子节点的值再次插入到直接删除后的原二叉树中,如果直接删除,会导致删了一个,子节点跟着也被删了。

2,删除时,要先查找key值再二叉树中是否出现。

2,代码展示

#include
using namespace std;
typedef struct BSTNode
{
    int data;
    struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
void InsertBST(BSTree &T,int e)
{
	BSTree S;
	if (!T) {
		S = new BSTNode;
		S->data = e;
		S->lchild = NULL;
		S->rchild = NULL;
		T = S; 
	}
	else if(e > T->data) {
		InsertBST(T->rchild,e);
	}
	else if(e data) {
		InsertBST(T->lchild,e); 
	}
}
BSTree SearchBST(BSTree T,int key) 
{
	if (!T||T->data == key) {
		return T;
	}
	else if (key > T->data) {
		return SearchBST(T->rchild,key);
	}
	else if (key data) {
		return SearchBST(T->lchild,key);
	}
}
void CreatBST(BSTree &T) 
{
	T = NULL;
	int a[100],i;
	cin>>a[0];
	for (i=0; a[i]!=-1; i++) {
		InsertBST(T,a[i]);
		cin>>a[i+1];
	}
}
void InOrderTraverse(BSTree T) 
{
	if (T) {
		InOrderTraverse(T->lchild);
		coutdatarchild);
	}
}
int main ()
{
	int key;
	BSTree T;
	CreatBST(T);
	InOrderTraverse(T);
	cin>>key;
	if (SearchBST(T,key)) {
		if (SearchBST(T,key)->lchild) {
			coutlchild->datarchild) {
			coutrchild->data

2,运行截图

技术图片
技术图片

二叉排序树的实现

标签:==   strong   nod   clu   int   出现   遇到   mic   调用   

原文地址:https://www.cnblogs.com/xzxzxzx/p/12733022.html


评论


亲,登录后才可以留言!