• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

求解,(二叉树)怎么样在这个c语言中加入输出一个从左到右遍历的序列的功能

#include#include#includetypedef struct bitnode{    char data;    //结点数据    struct node *Lchild;    //左孩子    struct node *Rchild;    //右孩子}tree;   //结点int  Lchild_len(char insequence[10],char root_data) //得到左孩子的长度{    int len=strlen(insequence);    int i=0;    int sum=0;  //记录左孩子长度    while(insequence!=root_data)    {        i++;        sum++;    }    return sum;}int Rchild_len(char insequence[10],char root_data)  //得到右孩子的长度{    int i=0;    int sum=0;   //记录右孩子长度    while(insequence!='\0'&&insequence[i++]!=root_data);    while(insequence!='\0')    {        sum++;        i++;    }    return sum;}tree* create_tree(char presequence[10],char insequence[10]) //创建二叉树{    tree* temp=(tree*)malloc(sizeof(tree));   //创建结点    int L_len,R_len;      //储存左右孩子长度    char L_presequence[10],L_insequece[10];   //创建左孩子时传入的左孩子的前序串和中序串    char R_presequence[10],R_insequece[10];   //创建右孩子时传入的右孩子的前序串和中序串    L_presequence[0]=L_insequece[0]=R_presequence[0]=R_insequece[0]='\0';    if(strlen(presequence)!=0&&strlen(insequence)!=0)  //传入的序列串非空    {        temp->data=presequence[0];     //根结点数据赋值        L_len=Lchild_len(insequence,presequence[0]);  //获得孩子的长度        R_len=Rchild_len(insequence,presequence[0]);        strncpy(L_presequence,presequence+1,L_len);    //得到要递归创建孩子时要传入的前序遍历串和中序遍历串        *(L_presequence+L_len)='\0';              //字符串末尾加上'\0'        strncpy(R_presequence,presequence+L_len+1,R_len);        *(R_presequence+R_len)='\0';        strncpy(L_insequece,insequence,L_len);        *(L_insequece+L_len)='\0';        strncpy(R_insequece,insequence+L_len+1,R_len);        *(R_insequece+R_len)='\0';        temp->Lchild=create_tree(L_presequence,L_insequece);   //递归创建左子树        temp->Rchild=create_tree(R_presequence,R_insequece);   //递归创建右子树        return temp;    //返回结点地址    }    else    //若根结点无孩子,则返回空指针    {        return NULL;    }}int main(){    char presequence[10];  //存先序序列    char insequence[10];   //存中序序列    tree *root;    scanf("%s",presequence);    scanf("%s",insequence);    root=create_tree(presequence,insequence);    levelorder(root);    printf("\n");}

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

你这个代码看的太累了我就不看了,反正遍历最简单的无非就是一个递归
结束条件是执行到叶结点(生成树的时候置为NULL)
voidtraverse(treet){if(t==NULL){return;}//TODO:在此处进行当前结点的一些你想要的操作(前序遍历)doSth(t);traverse(t->lchild);traverse(t->rchild);}

使用道具 举报

发新帖

发布任务需求已有1031164位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!