/**二叉排序树的查找,如果所要查找的元素在树里面,则输出true,如果不在树里面,则输出false**/
#include<iostream>
using namespace std;
#define EndFlag -1
typedef int DataType;
typedef struct BSNode//Binary Sort Tree=二叉排序树
{
DataType data;
struct BSNode *lchild,*rchild;
}BSNode,*BSTree;
BSTree InsertTree(BSTree &T,DataType e)
{
BSNode *s;
if(!T)
{
s=new BSNode;
s->data=e;
s->lchild=NULL;
s->rchild=NULL;
T=s;
}
else//如果T->data==e,则说明树里面已经有这个数据了,就不用再插入了//这个设定可以改变
{
if(e>T->data)
InsertTree(T->rchild,e);
else if(e<T->data)
InsertTree(T->lchild,e);
}
}
BSTree SearchBST(BSTree T,DataType e)
{
if(!T||e==T->data)
return T;//如果树为空,则返回的它的地址为空,如果当前结点的数据与要查找的数据相同,则直接返回它的地址
else if(e>T->data)
SearchBST(T->rchild,e);
else if(e<T->data)
SearchBST(T->lchild,e);
}
void CreateTree(BSTree &T)
{
DataType e;
T=NULL;//先创建一个空树
cin>>e;
while(e!=EndFlag)
{
InsertTree(T,e);
cin>>e;
}
}
void InOrderTraverse(BSTree T)
{
if(!T)
return;
else
{
InOrderTraverse(T->lchild);
cout<<T->data<<" ";
InOrderTraverse(T->rchild);
}
}
int main(void)
{
int a;
BSTree T;
cout<<"输入初始元素生成一棵树:";
CreateTree(T);
cout<<"中序遍历为:";
InOrderTraverse(T);
cout<<endl;
cout<<"输入要查找的元素:";
cin>>a;
if(!SearchBST(T,a))
cout<<"false";
else cout<<"true";
}
二叉排序树的创建和查找 C++
最新推荐文章于 2022-07-03 18:14:17 发布