二叉树递归创建遍历

转载 2012年03月22日 23:23:29
题目描述:

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
ABC##DE#G##F###
其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

输入:

输入包括1行字符串,长度不超过100。

输出:

可能有多组测试数据,对于每组数据,
输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。
每个输出结果占一行。

样例输入:
abc##de#g##f###
样例输出:
c b e g d f a 

 

#include <stdio.h>
#include <stdlib.h>
char cache[101];

struct Node
{
    char data;
    struct Node * lchild,* rchild;
};
struct Node * root;
int cnt;

struct Node * Build_tree()
{
    struct Node * root;
    if(cache[cnt++] == '#') root = NULL;
    else
    {
        root = (struct Node *)malloc(sizeof(struct Node));
        root -> data = cache[cnt - 1];
        root -> lchild = Build_tree();
        root -> rchild = Build_tree();
    }
    return root;
}
void in_order(struct Node *root)
{
    if(root != NULL)
    {
        in_order(root -> lchild);
        printf("%c ",root -> data);
        in_order(root -> rchild);
    }
}
void clean(struct Node *root)
{
    if(root != NULL)
    {
        clean(root -> lchild);
        clean(root -> rchild);
        free(root);
    }
}
int main()
{
    //int i;
    while(scanf("%s",cache) != EOF)
    {
        cnt = 0;
        root = Build_tree();
        in_order(root);
        clean(root);
        printf("\n");
    }
    return 0;
}


二叉树的创建即遍历(递归方式)

最近准备把数据结构书上的算法用代码实现一遍,在二叉树这块遇到了一点小问题,发现是自己指针这块还没过关,研究了一个小时候,终于明白二级指针的使用情况,(那些自认为自己指针过关的同学可不要停留在一级指针这...
  • u012997465
  • u012997465
  • 2016年04月06日 23:21
  • 1488

二叉树的递归创建,以及二叉查找树查找的建立 和遍历查找的比较

二叉树的递归创建 、以及二叉查找树查找的建立 和遍历查找的比较 (1)二叉树的递归创建和二叉树的数组表示法非常相似,可参考二叉树的数组创建 (2)二叉查找树的特性 1)每一个结点的值都...
  • liuzuyi200
  • liuzuyi200
  • 2014年04月21日 17:23
  • 1572

Java创建二叉树及其遍历的递归和非递归实现

紧接上一篇,网上搜索了Java实现二叉树的方法及二叉树的遍历方法,参考:http://blog.csdn.net/skylinesky/article/details/6611442     学习和调...
  • yiyiwudian
  • yiyiwudian
  • 2015年06月16日 16:12
  • 1057

Java实现二叉树的创建、递归/非递归遍历

最近复习数据结构中的二叉树的相关问题,在这里整理一下 这里包括: 1、二叉树的先序创建 2、二叉树的递归先序遍历 3、二叉树的非递归先序遍历 4、二叉树的递归中序遍历 5、二叉树的非递归中序遍历 6、...
  • u010829118
  • u010829118
  • 2014年08月10日 16:21
  • 2672

C++实现二叉树的建立和三种递归遍历

二叉树是一种常见的数据结构,二叉树的遍历也是家常便饭的事了,这里仅仅写出一个完整的可以运行的C++代码来随便建立一个如下图所示的二叉树,建一棵二叉树是实现二叉树各种操作的基础,下面的程序也很简单,这只...
  • JXH_123
  • JXH_123
  • 2014年06月30日 20:16
  • 2721

数据结构--------二叉树的建立和前序遍历------递归实现

代码实现: #include #include typedef char ElemType; typedef struct BiTNode { char data; struct BiT...
  • u011459278
  • u011459278
  • 2014年03月19日 14:48
  • 1474

二叉树建立与遍历递归操作c++实现

#include #include #include using namespace std; //二叉树的数据类型 typedef char BiTType; ...
  • lwy313722871
  • lwy313722871
  • 2013年12月14日 00:50
  • 1587

二叉树(一):二叉树的创建以及三种遍历方法的递归实现

我们都知道现实生活中的树长什么样,那么,很明显,二叉树就是一棵“树”,不过它是一个存储数据的一种结构,根在上,向下生长。 当然,这样的存储结构只是其中的一种。在这里,就要引出二叉树的存储和二叉树的遍历...
  • qq_33951180
  • qq_33951180
  • 2016年09月27日 22:07
  • 1595

二叉树的四种遍历的递归和非递归的实现

二叉树的三种遍历为:前序遍历,中序遍历和后序遍历。 遍历的实现可分为递归和非递归。递归法与二叉树的定义相似,非递归法采用栈去模拟实现。 一、前序遍历的次序为:根结点——左结点——右结点。 递归法实现:...
  • xiaominkong123
  • xiaominkong123
  • 2016年06月02日 16:50
  • 485

递归和非递归方法建立二叉树

研三了,天天忙着找工作,细数来看过的算法也算多了,但是都是在不同的电脑上看的,而且都没有记录,因此开通此博客用于记录平时看书的笔记或者笔试题目,算法等的解释,写于此便于自己日后回顾和让其他在招工的同学...
  • hailong0715
  • hailong0715
  • 2013年08月30日 16:45
  • 2321
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树递归创建遍历
举报原因:
原因补充:

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