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

来源:互联网 发布:vscode 代码提示 编辑:程序博客网 时间:2024/06/05 05:36



#include<stdio.h>#include<string.h>#include<stdlib.h>char a[100];int i;int count;struct node{    int data;    struct node *lchild;    struct node *rchild;};struct node *creat(){    struct node  *root;    char c;    c=a[i++];    if(c==',')        return NULL;    else    {        root=(struct node *)malloc(sizeof(struct node));        root->data=c;        root->lchild=creat();        root->rchild=creat();    }    return root;}void zhong(struct node *root){    if(root)    {        zhong(root->lchild);        printf("%c",root->data);        zhong(root->rchild);    }}void hou(struct node *root){    if(root)    {        hou(root->lchild);        hou(root->rchild);        printf("%c",root->data);    }}void leaves(struct node  *root){    if(root!=NULL)    {        if(root->lchild==NULL&&root->rchild==NULL)        {            count++;        }        leaves(root->lchild);        leaves(root->rchild);    }}int treedeep(struct node *root){    int ld,rd;    if(!root)        return 0;    else    {        ld = treedeep(root->lchild);        rd = treedeep(root->rchild);        if(ld>rd)            return ld+1;        else            return rd+1;    }}int main(){    struct node *root;    scanf("%s",a);    i=0;    count=0;    root=creat();    zhong(root);    printf("\n");    hou(root);    printf("\n");    leaves(root);    printf("%d\n",count);    printf("%d\n",treedeep(root));    return 0;}


0 0
原创粉丝点击