分享

二叉查找树

 昵称1740930 2012-03-30
#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);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多