qq_39158327 2017-12-06 13:51 采纳率: 0%
浏览 871

交换二叉树子树,运行出现错误,求指教

#include
#include
#include
typedef int Elemtype;
typedef struct Bitnode
{Elemtype data;//数据域//
struct Bitnode *lchild,*rchild;//左右指针域//
}Bitnode,*Bitree;

//建立二叉树//
int CreatBitree(Bitree T )
{Elemtype ch,temp;
scanf("%d",&ch);

if(ch==-1)
T=NULL;
else
{
T=(Bitree)malloc(sizeof(Bitnode));
T->data=ch;
printf("输入%d的左子树:",ch);
CreatBitree(T->lchild);
printf("输入%d的右子树:",ch);
CreatBitree (T->rchild);}

return 1;

}
//先序遍历二叉树//
void preorder(Bitree T )
{if(T!=NULL) printf("%d ",T->data);
preorder(T->lchild );
preorder(T->rchild );
}

//交换二叉树左右节点//
int jiaohuan(Bitree &T)
{
Bitree k;
if(T==NULL) return 0;
else while(T->lchild!=NULL||T->rchild!=NULL)
{
k=T->lchild;
T->lchild=T->rchild;
T->rchild=k;
}jiaohuan(T->lchild);
jiaohuan(T->rchild);
printf("hjkd");

}
//输出二叉树//
int shuchu(Bitree T)
{if(T==NULL) return 0;
else printf("%d",T->data);
shuchu(T->lchild);
shuchu(T->rchild);
}

int main(void)
{

int num=0;
Bitree T=(Bitree)malloc(sizeof(Bitree));
printf("输入根节点色数,-1时为空姐点:");
CreatBitree(*T);
preorder(*T);
jiaohuan(*T);
shuchu(*T);
return 0;
}

  • 写回答

4条回答 默认 最新

  • Leve_o 2017-12-06 15:49
    关注

    推荐使用无返回值的void型
    void exchange(Bitree *root)
    {
    Bitree *t=NULL;
    if(root->lchild==NULL && root->rchild==NULL)
    return;
    else
    {
    t=root->lchild;
    root->lchild=root->rchild;
    root->rchild=t;
    }
    if(root->lchild)
    exchange(root->lchild);
    if(root->rchild)
    exchange(root->rchild);
    }

    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面