#include<iostream.h>
typedef struct BiNode
{
int data; //結(jié)點(diǎn)的值,假設(shè)查找集合的元素為整型
BiNode *lchild, *rchild; //指向左、右子樹的指針
}BiNode;
BiNode * SearchBST(BiNode *root, int k);
BiNode *insertBST(BiNode *tree,int data);
BiNode *createBST(int a[],int n);
int main()
{
BiNode *root,*t;
int a[]={55,42,10,70,63,58,83,67,90,45};
root=createBST(a,10);
t=SearchBST(root,10);
if(t)
cout<<"查找成功";
else
cout<<"查找失敗";
return 0;
}
BiNode *insertBST(BiNode *tree,int data) //二叉排序樹的插入
{
if(tree==NULL)
{
tree=new BiNode;
tree->data=data;
tree->lchild=NULL;
tree->rchild=NULL;
return tree;
}
if(data<=tree->data)
tree->lchild=insertBST(tree->lchild,data);
else
tree->rchild=insertBST(tree->rchild,data);
return tree;
}
BiNode *createBST(int a[],int n) //二叉排序樹的創(chuàng)建
{
BiNode *t=NULL;
int i=0;
while(a[i]!=-1)
{
t=insertBST(t,a[i]);
i++;
}
return t;
}
BiNode * SearchBST(BiNode *root, int k)
{
if (root == NULL) return NULL; //二叉查找樹為空,查找失敗
else if (root->data == k) return root; //查找成功
else if (k < root->data) //查找左子樹
return SearchBST(root->lchild, k);
else //查找右子樹
return SearchBST(root->rchild, k);
}
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。