二叉树遍历

原创 2015年11月20日 18:42:03

数据结构实验之二叉树二:遍历二叉树

Time Limit: 1000MS Memory limit: 65536K

题目描述

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。

输入

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

输出

每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。

 

示例输入

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

示例输出

cbegdfacgefdba




#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
char q[100];int i;
struct node
{
    char data;
    struct node *l,*r;
};
struct node *creat(struct node *p)
{


    if(q[i++]==',')
     p=NULL;
    else
    {
        p=(struct node *)malloc(sizeof(struct node));
        p->data=q[i-1];
        p->l=creat(p->l);
        p->r=creat(p->r);
    }
    return p;
}
int zhongxu(struct node *p)
{
    if(p)
    {
        zhongxu(p->l);
        printf("%c",p->data);
        zhongxu(p->r);
    }
    return 0;
}


int houxu(struct node *p)
{
    if(p)
    {
        houxu(p->l);
        houxu(p->r);
        printf("%c",p->data);
    }
    return 0;
}
int main()
{


   while(scanf("%s",q)!=EOF)
    {i=0;
        struct node *head;
        head = (struct node *)malloc(sizeof(struct node));
        head = creat(head);
        zhongxu(head);
       printf("\n");
       houxu(head);
        printf("\n");
    }
    return 0;
}

二叉树遍历解析

1 / \ 2 3 / \ / \ 4 5 6 ...
  • u014805066
  • u014805066
  • 2016年01月30日 13:58
  • 437

【华为练习题】二叉树遍历

【华为练习题】二叉树遍历题目二叉树遍历 描述: 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其...
  • sps900608
  • sps900608
  • 2016年09月13日 23:28
  • 614

二叉树的三种遍历练习题

一 二叉树的基础问题
  • XSF50717
  • XSF50717
  • 2014年10月11日 20:10
  • 5777

C++实现二叉树遍历

二叉树节点图: 简述: 分别使用前序遍历(LNR)、中序遍历(NLR)、后续遍历(LRN)实现数据输出 代码及实现: /***********************二叉树遍历...
  • anialy
  • anialy
  • 2012年06月03日 01:57
  • 9846

【每日算法】二叉树的遍历

二叉树特点 每个节点最多有两棵子树; 二叉树是有序的,即区分左右子树的次序。 完全二叉树 叶子节点只能出现在最下两层,且最下层的叶子节点都集中在二叉树左侧连续的位置。 如果有度为1的节点,...
  • jiange_zh
  • jiange_zh
  • 2016年02月25日 00:17
  • 1868

用java代码实现二叉树的遍历算法

二叉树的遍历可以采用递归算法来实现,遍历方式有三种:先序遍历,中序遍历,后序遍历。    下面是一个例子:                      public   class   BinTre...
  • qq_27692191
  • qq_27692191
  • 2016年02月25日 20:27
  • 453

二叉树遍历的的例子

二叉树遍历代码二叉树三种遍历小例子:#include #include struct BTNode * CreateBTree(void); void PreTraverseBTree(struct...
  • Dean_Deng
  • Dean_Deng
  • 2015年08月23日 11:39
  • 1139

二叉树遍历c++实现

//自己还真是个菜鸡,大一学了一年c++,现在还在基础的语法上转圈,还没有意识到c++真正的 //的强大之处在于它的多变,封装,等算法告一段落了在考虑是往Java上走还是深造c++ #include ...
  • weixin_36346676
  • weixin_36346676
  • 2016年10月28日 17:30
  • 205

PHP实现二叉树遍历(非递归方式,栈模拟实现)

二叉树定义是这样的:一棵非空的二叉树由根结点及左、右子树这三个基本部分组成,根据节点的访问位置不同有三种遍历方式: ① NLR:前序遍历(PreorderTraversal亦称(先序遍历)) ...
  • u013474436
  • u013474436
  • 2016年02月18日 16:37
  • 525

二叉树遍历的递归、非递归算法(Java实现)

二叉树先序遍历、中序遍历、后序遍历的递归以及非递归算法(Java实现)
  • apandi_
  • apandi_
  • 2016年10月24日 22:35
  • 1862
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树遍历
举报原因:
原因补充:

(最多只允许输入30个字)