#include<iostream.h>
typedef struct BiNode { int data; //结点的值,假设查找集合的元素为整型 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) //二叉排序树的创建 { 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); } |
|