数据结构实验之二叉树的建立与遍历

来源:互联网 发布:360wifi网络不稳定 编辑:程序博客网 时间:2024/06/05 17:19
#include<stdio.h>#include<string.h>typedef struct no{    char data;    struct no *lc,*rc;}node;int l=0,k=0;char a[50];node *creat(){    node *p;    char c;    c=a[l++];    if(c==',')    {        return NULL;    }    else    {        p=new(node);        p->data=c;        p->lc=creat();        p->rc=creat();    }    return p;}void middle(node *p){    if(p)    {        middle(p->lc);        printf("%c",p->data);        middle(p->rc);    }}void last(node *p){    if(p)    {        last(p->lc);        last(p->rc);        printf("%c",p->data);    }}void jiedian(node *p){    if(p)    {        if(p->lc==NULL&&p->rc==NULL)    {        k++;    }    else    {        jiedian(p->lc);        jiedian(p->rc);    }    }}int deep(node *p){    int ld=0,rd=0;    if(!p)    {        return 0;    }    else    {        ld=deep(p->lc);        rd=deep(p->rc);      if(ld>rd)      {          return ld+1;      }      else        return rd+1;    }}int main(){    node *q;    int d;    q=new(node);    scanf("%s",a);    q=creat();    middle(q);    printf("\n");    last(q);    printf("\n");    jiedian(q);    printf("%d\n",k);    d=deep(q);    printf("%d\n",d);    return 0;}

0 0
原创粉丝点击