写的属实不好,还有输出真的不好看
#include<iostream>
#include <malloc.h>
#include<stdio.h>
using namespace std;
typedef struct Node{
int data;
struct Node *lchild,*rchild;
}BiTreeNode,*BiTree;
BiTree BSTSearch (BiTree T,int x);
int BSTInsert(BiTree *T,int x);
void InOrderTraverse(BiTree T);
int main(){
BiTree T=NULL,p;
int table []={55,33,44,66,88,99,11,22,77};
int n=sizeof(table)/sizeof(table [0]);
int x,i;
for(i=0;i<n;i++)
BSTInsert(&T,table[i]);
cout<<"中序遍历二叉排序树得到的序列为:"<<endl;
InOrderTraverse(T);
cout<<"请输入要查找的元素:";
cin>>x;
p=BSTSearch(T,x);
if(p!=NULL)
cout<<"二叉排序树查找:元素"<<x<<"查找成功"<<endl;
else
cout<<"二叉排序树查找:没有找到元素"<<x<<endl;
}
BiTree BSTSearch (BiTree T,int x)
{
BiTreeNode *p;
if(T!=NULL)
{
p=T;
while (p!=NULL)
{
if(p->data==x)
return p;
else if(x<p->data)
p=p->lchild;
else p=p->rchild;
}
}
return 0;
}
int BSTInsert(BiTree *T,int x)
{
BiTreeNode *p,*cur,*parent=NULL;
cur=*T;
while(cur!=NULL)
{
if(cur->data==x)
return 0;
parent=cur;
if(x<cur->data)
cur=cur->lchild;
else
cur=cur->rchild;
}
p=(BiTreeNode*)malloc(sizeof(BiTreeNode));
if(!p)
exit(-1);
p->data=x;
p->lchild=NULL;
p->rchild=NULL;
if(!parent)
*T=p;
else if(x<parent->data)
parent->lchild=p;
else parent->rchild=p;
return 1;
}
void InOrderTraverse(BiTree T)
{
if(T)
{
InOrderTraverse(T->lchild);
cout<<T->data;
InOrderTraverse(T->rchild) ;
}
}