m0_63599779 2021-12-05 22:04 采纳率: 0%
浏览 32

二叉树的遍历节点下标左右下标

给定一棵大小为n的树(其中二叉树的根始终为0号节点) 输入: 输入第一行一个整数n代表树的大小 接下来n行每行三个整数,分别代表节点的下标,以及该节点左儿子的下标和右儿子的下标。其中-1代表节点为NULL

#include<stdio.h>
#include<stdlib.h>
int n;
struct node {
struct node *lchild ;
struct node rchild ;
int id ;
} ;
typedef struct node * BTREE ;
void create (BTREE &bt)
{
int x,y,z;
scanf(" %d%d%d",&x,&y,&z);
if(x==-1||x>=n)
bt=NULL;
else
{
bt=(node
)malloc(sizeof(node));
bt->id=x;
bt->lchild->id=y;
bt->rchild->id=z;
create(bt->lchild);
create(bt->rchild);
}
}
void preorder(BTREE bt)
{
if(bt==NULL)
return;
else
{

    printf("%d",bt->id);
    preorder(bt->lchild);
    preorder(bt->rchild);
}

}
void inorder(BTREE bt)
{
if(bt==NULL)
return;
else
{
inorder(bt->lchild);
printf("%d",bt->id);
inorder(bt->rchild);
}
}
void postorder(BTREE bt)
{
if(bt==NULL)
return;
else
{
postorder(bt->lchild);
postorder(bt->rchild);
printf("%d",bt->id);
}
}
int main()
{
BTREE bt;
scanf("%d",&n);
create(bt);
preorder(bt);
inorder(bt);
postorder(bt);
return 0;
}
这样子为什么不行呢

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-12-05 22:29
    关注

    bt=(node)malloc(sizeof(node));
    bt->id=x;
    bt->lchild->id=y;
    bt->rchild->id=z;
    这肯定是错的啊,你只是给bt分配了空间,并没有给lchild分配空间啊,你就进行lchild->id操作,就崩溃掉了

    评论

报告相同问题?

问题事件

  • 创建了问题 12月5日

悬赏问题

  • ¥15 mysql sum函数优化
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题
  • ¥20 基于matlab的航迹融合 航迹关联 航迹插补
  • ¥15 用Matlab实现图中的光线追迹