二叉排序樹的查詢
阿新 • • 發佈:2020-12-14
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
typedef struct bstnode{
int data;
struct bstnode *lchild,*rchild;
}bstnode,*bstree;
void insertbst(bstree &mytree,int x){
if(mytree==NULL){
mytree=new bstnode;
mytree->data=x;
mytree- >lchild=NULL;
mytree->rchild=NULL;
}else if(x<mytree->data){
insertbst(mytree->lchild,x);
}else if(x>mytree->data){
insertbst(mytree->rchild,x);
}
}
void creatbst(bstree &mytree){
mytree=NULL;
int x;
cin>>x;
while(x!=0){
insertbst (mytree,x);
cin>>x;
}
}
void visit(bstree mytree){
if(mytree){
visit(mytree->lchild);
cout<<mytree->data<<" ";
visit(mytree->rchild);
}
}
int searchbst(bstree mytree,int key){
if(mytree==NULL) return 0;
else if(key<mytree->data) return searchbst(mytree->lchild,key);
else if(key>mytree->data) return searchbst(mytree->rchild,key);
if(key==mytree->data) return 1;
}
int main()
{
bstree mytree;
creatbst(mytree);//3 12 24 37 45 99 53 88 61 78 77 90 120 100 0
visit(mytree);
int a=searchbst(mytree,101);
cout<<endl;
cout <<a<< endl;
return 0;
}