#include<stdio.h>
#include<malloc.h>
#define MAX 100
typedef struct node {
char data;
struct node *rchild,*lchild;
} BTreeNode;
BTreeNode *create() {
int i,j;
char data;
BTreeNode *s,*q[MAX];
printf("输入i,data的值\n");
scanf("%d %c",&i,&data);
while(i!=0&&data!='#') {
s=(BTreeNode*)malloc(sizeof(BTreeNode));
s->data=data;
s->lchild=NULL;
s->rchild=NULL;
q[i]=s;
if(i!=1) {
j=i/2;
if(i%2==0)
q[j]->lchild=s;
else
q[j]->rchild=s;
}
printf("输入i,data的值\n");
scanf("%d %c",&i,&data);
}
return q[1];
}
void show(BTreeNode *t,int n) {
if(t!=NULL) {
show(t->rchild,n+1);
for(int i=0; i<n; i++)
printf("\t");
printf("---%c\n",t->data);
show(t->lchild,n+1);
}
}
BTreeNode *FindNode(BTreeNode *t,char data) {
printf("data=%c",data);
if(t->lchild!=NULL&&t->lchild->data==data)
return t;
else if(t->rchild!=NULL&&t->rchild->data==data)
return t;
else {
if(t->lchild!=NULL) {
BTreeNode *left=FindNode(t->lchild,data);
if(left!=NULL)
return left;
}
if(t->rchild!=NULL) {
BTreeNode *right=FindNode(t->rchild,data);
if(right!=NULL)
return right;
}
}
return NULL;
}
main() {
BTreeNode *tree;
tree=create();
show(tree,0);
char data;
printf("输入查找的值:\n");
data=getchar();
BTreeNode *findNode;
findNode=FindNode(tree,data);
if(findNode!=NULL) {
printf("其父节点为:%c",findNode->data);
} else {
printf("未找到该节点");
}
}
求助!!!!!!