代码如下,先按先序遍历建立了一颗树,然后想通过一个查找函数找到需要节点的地址,
最后通过主函数中的P指针输入该节点的数据,可是每次都显示P指针指向的是空,我坚持了几遍查找函数都没发现问题,求老哥们支个招。
#include
#include
#include
struct BiTree_Node{
char data;
struct BiTree_Node *L;
struct BiTree_Node *R;
};
char Search_data;
void creat_BiTree(struct BiTree_Node **root){
char DATA;
scanf_s("%c",&DATA);
if (DATA == ' ')
*root = NULL;
else{
*root = (struct BiTree_Node*)malloc(sizeof(struct BiTree_Node));
(*root)->data = DATA;
creat_BiTree(&((*root)->L));
creat_BiTree(&((*root)->R));
}
}
char Vist(char out_data){
printf_s("%3c", out_data);
return out_data;
}
void before_output(struct BiTree_Node*root){
if (root == NULL)return;
else {
Vist(root->data);
before_output(root->L,Vist);
before_output(root->R,Vist);
}
}
struct BiTree_Node*Search(struct BiTree_Node*root){
struct BiTree_Node*Search_pointer;
if (root == NULL)return NULL;
if (root->data == Search_data)return root;
if (root->L != NULL){
Search_pointer = Search(root->L, Search_data);
if (Search_pointer != NULL)return Search_pointer;
}
if (root->R != NULL){
Search_pointer = Search(root->R, Search_data);
if (Search_pointer != NULL)return Search_pointer;
}
return NULL;
}
void main(){
struct BiTree_Node *root;
struct BiTree_Node *p;
creat_BiTree(&root);
before_output(root, Vist);
printf_s("\n");
printf_s("请输入查找的数据\n");
scanf_s("%*s");
scanf_s("%c", &Search_data);
p=Search(root);
printf_s("%c", p->data);
system("pause");
}