zoukankan      html  css  js  c++  java
  • SDUT-2136 数据结构实验之二叉树的建立与遍历

    题目描述

           已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。

    输入

     输入一个长度小于50个字符的字符串。

    输出

    输出共有4行:
    第1行输出中序遍历序列;
    第2行输出后序遍历序列;
    第3行输出叶子节点个数;
    第4行输出二叉树深度。

    示例输入

    abc,,de,g,,f,,,

    示例输出

    cbegdfa
    cgefdba
    3
    5

    #include<stdio.h>
    #include<stdlib.h>
    struct Tree{
         char data;
         struct Tree *lchild, *rchild;
    }*t;
    int cnt=0;//用于统计叶子的数目
    struct Tree *creat(struct Tree *t)//根据先序建立二叉树
    {
         char ch;
         ch = getchar();
         if(ch==',')
                t = NULL;
         else
         {
              t = (struct Tree *)malloc(sizeof(struct Tree));
              t->data = ch;
              t->lchild= creat(t->lchild);
              t->rchild= creat(t->rchild);
         }
         return t;
    }
    void Inorder(struct Tree *t)//中序遍历
    {
        if(t!=NULL)
        {
             Inorder(t->lchild);
             printf("%c", t->data);
             Inorder(t->rchild);
        }
    }
    void Postorder(struct Tree *t)//后续遍历
    {
        if(t!=NULL)
        {
            Postorder(t->lchild);
            Postorder(t->rchild);
            printf("%c", t->data);
        }
    }
    void leaf(struct Tree *t)//求叶子节点数目
    {
        if(t)
        {
            if((t->lchild==NULL) && (t->rchild==NULL))
                cnt++;
             leaf(t->lchild);
             leaf(t->rchild);
        }
    }
    
    int deep(struct Tree *t)// 求二叉树深度
    {
        int l, r;
        if(!t)
            return 0;
        l = deep(t->lchild);
        r = deep(t->rchild);
        return l>r?l+1:r+1;
    }
    int main()
    {
         struct Tree *root;
         root = creat(root);
         Inorder(root);
         printf("
    ");
         Postorder(root);
         printf("
    ");
         leaf(root);
         printf("%d
    ", cnt);
         printf("%d
    ", deep(root));
    
         return 0;
    }
    每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
  • 相关阅读:
    Dolby pro logic introduction
    3.8 Language Support(audio)
    what is dual mono
    会计misc
    除权除息
    MPEG2-TS音视频同步原理(PCR dts pts)
    计算视频文件(包含PCR)播放带宽的方法 PCR计算码率
    cocos2d 动作切换
    cocos2d 播放音乐
    cocos2d 主角更随触屏走
  • 原文地址:https://www.cnblogs.com/6bing/p/4113781.html
Copyright © 2011-2022 走看看