永发信息网

二叉树创建问题

答案:1  悬赏:0  手机版
解决时间 2021-07-31 01:51
  • 提问者网友:戎马万世
  • 2021-07-30 11:25
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *Lchild;
struct Node *Rchild;
}BiTree;
void CreatTree(BiTree *root)
{
char ch;
ch=getchar();
if(ch=='.')root=NULL;
else
{
root=(BiTree*)malloc(sizeof(Node));
root->data=ch;
CreatTree(root->Lchild);
CreatTree(root->Rchild);
}
}
这是我自己定义的一个创建二叉树的函数。
在主函数里调用如下:
BiTree *R;
R=(BiTree *)malloc(sizeof(Node));
CreatTree(R);
printf("%c",R->data);
创建最简单的二叉树a(b,c)
输入ab..c..
但是printf函数输出确实“?”
最佳答案
  • 五星知识达人网友:woshuo
  • 2021-07-30 12:40
你忘记返回创建的根节点指针了
所以访问地址错误
给你改过来了 要注意的地方有注释
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *Lchild;
struct Node *Rchild;
}BiTree;
void CreatTree(BiTree * &root)//这里要返回指针
{
char ch;
ch=getchar();
if(ch=='.')
{
root=NULL;
return;
}
else
{
root=(BiTree*)malloc(sizeof(Node));
root->data=ch;
CreatTree(root->Lchild);
CreatTree(root->Rchild);
}
}

void main()
{
BiTree *R;
//R=(BiTree *)malloc(sizeof(Node));//这里不需要再创建节点了
CreatTree(R);
printf("%c",R->data);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯