标签:== strong nod clu int 出现 遇到 mic 调用
1,伪代码部分
BSTree SearchBST(BSTree T,int key)
{
if (!T||key==T->date) return T;
else if(key<T->data.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 << a[0];
for (i=0; a[i]!=-1; i++) //当遇到-1时停止;
InsertBST(T,e); //调用Insert函数
cin<< a[i];
}
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<iostream>
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 < T->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 < T->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);
cout<<T->data<<" ";
InOrderTraverse(T->rchild);
}
}
int main ()
{
int key;
BSTree T;
CreatBST(T);
InOrderTraverse(T);
cin>>key;
if (SearchBST(T,key)) {
if (SearchBST(T,key)->lchild) {
cout<<"左孩子: "<<SearchBST(T,key)->lchild->data<<"\n";
}
else {
cout<<"无左孩子\n";
}
if (SearchBST(T,key)->rchild) {
cout<<"右孩子; "<<SearchBST(T,key)->rchild->data<<"\n";
}
else {
cout<<"无右孩子\n";
}
}
else {
cout<<"查找失败!";
}
return 0;
}
2,运行截图
标签:== strong nod clu int 出现 遇到 mic 调用
原文地址:https://www.cnblogs.com/xzxzxzx/p/12733022.html