这段程序有问题,但不知道问题在哪?
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct celltype {
int data;
struct celltype *lchild, *rchild;
}BSTNode;
typedef BSTNode *BST;
BST searchBST(int k, BST F)
{
BSTNode *p = F;
if (p == NULL || k == p->data)
return p;
if (k < p->data)
return (searchBST(k, p->lchild));
else
return (searchBST(k, p->rchild));
}
int main()
{
BST p = (struct celltype *)malloc(sizeof(struct celltype));
p->data = 3;
p->lchild->data = 1;
p->rchild->data = 5;
BST T = searchBST(5, p);
cout << T->data << endl;
return 0;
}
问题解决了!原来是左右儿子节点没有申请存储空间!
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct celltype{
int data;
struct celltype *lchild,*rchild;
}BSTNode;
typedef BSTNode *BST;
BST searchBST(int k,BST F)
{
BSTNode *p=F;
if(p==NULL||k==p->data)
return p;
if(k<p->data)
return (searchBST(k,p->lchild));
else
return (searchBST(k,p->rchild));
}
int main()
{
BST p=(struct celltype *)malloc(sizeof(struct celltype));
p->lchild=(struct celltype *)malloc(sizeof(struct celltype));
p->rchild=(struct celltype *)malloc(sizeof(struct celltype));
p->data=3;
p->lchild->data=1;
p->rchild->data=5;
BST T=searchBST(5,p);
cout<<T->data<<endl;
return 0;
}