先创立一个符合二叉搜索树的树,再进行查找key,找到便使指针p指向找到的位置,找不到便返回最后的位置,不知道哪错了;
#include<stdio.h>
#include<stdlib.h>
typedef char elemtype;
enum {FALSE,TRUE};
typedef struct tree
{
elemtype data;
struct tree *lchild;
struct tree *rchild;
}BiTNode,*BiTree;
void CreatBiTree(BiTree* fm)
{
fm=(BiTree*)malloc(sizeof(BiTNode));
scanf("%c",&(*fm)->data);
//getchar();
if((*fm)->data!=' ')//以空格表示没有子节点
{
CreatBiTree(&(*fm)->lchild);
CreatBiTree(&(*fm)->rchild);
}
}
int SearchBiTree(BiTree Node,int key,BiTNode *f,BiTNode *p)
{
if(!Node)
{
*p=*f;
return FALSE;
}
if(key==Node->data)
{
*p=*Node;
return TRUE;
}
if(key<Node->data)
{
SearchBiTree(Node->lchild,key,Node,p);
}
if(key>Node->data)
{
SearchBiTree(Node->rchild,key,Node,p);
}
}
int main()
{
printf("以前序遍历创建二叉树并使其符合二叉搜索树的特征\n");
BiTree root;
CreatBiTree(&root);
elemtype key;
printf("输入需要搜索的值\n");
scanf("%c",&key);
BiTree f,p;
f=(BiTree)malloc(sizeof(BiTNode));
p=(BiTree)malloc(sizeof(BiTNode));
f=NULL;
SearchBiTree(root,key,f,p);
return 0;
}