#include "stdio.h"
#include <malloc.h>
#define max 100
typedef char datatype;
typedef struct node
{
datatype data;
struct node *lchild,*rchild;
}bitree;
bitree *Q[max];
bitree *CREATREE(bitree *t)
{
char x;
int i,j;
bitree *p=t;
printf("\t\t\t输出列号和字符\n");
printf("\t\t\t 以0和$结束\n");
printf("i,x= ");
scanf("%d,%c",&i,&x);
while (i!=0&&x!='$')
{
p=(bitree *)malloc(sizeof(bitree));//申请一个节点
p->data=x;
p->lchild=NULL;
p->rchild=NULL;
Q[i]=p;
if(i!=1)
{
j=i/2; //双亲节点。
if (i%2==0)
Q[j]->lchild=p; //判断是左子树还是右子树
else
Q[j]->rchild=p;
}
printf("i,x= ");
scanf("%d,%c",&i,&x);
}
return Q[1];
}
void PrinBtree(bitree *t)
{
//先序遍列
if (t!=NULL)
{
printf("%c ",t->data);
PrinBtree(t->lchild);
PrinBtree(t->rchild);
}
}
void main()
{
bitree *tree;
tree=CREATREE(tree);
PrinBtree(tree);
printf("\n");
}
如果我从。大于2开始输入。就会出现内存问题。
从1开始就没有问题。可以成生这个二叉树。
想让大侠们帮一下。那里的思路出错了
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)