扩展二叉树

原创 2013年12月04日 21:51:22

Problem Description

由于先序、中序和后序序列中的任一个都不能唯一确定一棵二叉树,所以对二叉树做如下处理,将二叉树的空结点用·补齐,我们把这样处理后的二叉树称为原二叉树的扩展二叉树,扩展二叉树的先序和后序序列能唯一确定其二叉树。现给出扩展二叉树的先序序列,要求输出其中序和后序序列。

Input

输入有多组数据,对于每组数据就一行为扩展二叉树序列(序列长度不超过50)。

Output

对于每组输入输出两行,分别是该二叉树的中序和后序序列。

Sample Input

ABD..EF..G..C..

Sample Output

DBFEGAC
DFGEBCA
//解题报告:二叉树的建立与遍历。
//标程:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct btnode  
{
	char data;
	struct btnode *lchild,*rchild;
}NODE;
char s[100];
int i;
NODE *creat(NODE *p)
{
	NODE *t;
	if(s[++i]=='.') p=NULL;
	else 
	{
		p->data=s[i];
		t=(NODE *) malloc (sizeof(NODE));
		p->lchild=creat(t);
		t=(NODE *) malloc (sizeof(NODE));
		p->rchild=creat(t);
	}
	return p;
}
void inorder(NODE *root)
{
	if(root!=NULL)
	{
		inorder(root->lchild);
		printf("%c",root->data);
		inorder(root->rchild);
	}
	return ;
}
void postorder(NODE *root)
{
   if(root!=NULL)
   {
	   postorder(root->lchild);
	   postorder(root->rchild);
	   printf("%c",root->data);
   }
   return ;
}
int main()
{
    //freopen("a.txt","r",stdin);
	while(scanf("%s",s)!=EOF)
	{
		i=-1;
        NODE *root,*q,n;
        q=&n;
		root=creat(q);
		inorder(root);
		printf("\n");
		postorder(root);
		printf("\n");
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

扩展二叉树(树)

Description 由于先序、中序和后序中任一个都不能确定一棵二叉树,所以对二叉树做如下处理,将二叉树的空结点用.补齐,如图所示。我们把这样处理后的二叉树称为原二叉树的扩展二叉树,扩展二叉树的先...

二叉树的建立(扩展二叉树法)

存储结构 由于二叉树的特殊性,可以用顺序结构来实现二叉树。如果是完全二叉树,直接按照树的层序依次将每个结点存入数组,相应的下标对应其相同的位置。 如果是一般的二叉树,尽管层序编号不能反映逻辑关系,但是...

数据结构复习笔记--二叉树内部路径外部路径的关系

将非满二叉树中,所有度不满2的节点扩充为2,便得到了扩充二叉树。扩充的节点称为外部节点,其余原来的节点称为内部节点。 书上给出外部路径和E=内部路径和I+2*n(n为内部节点个数)的证明是归纳法证明...

二叉树二度节点和叶子节点的数量关系

二叉树二度节点和叶子节点的数量关系: 假设共有节点 N 个, 二度几点 x 个,一度节点y个, 则叶子节点个数(设为z)? N个节点,那么共有树枝N - 1个 1个二度节点有2个树枝,叶子没有,...

编程之美 3.9 重建二叉树 扩展问题

编程之美 3.9 重建二叉树 题目描述:  给定一棵二叉树,假定每个节点都用唯一的字符表示,具体结构如下: struct NODE { NODE* pLeft; NODE* pRight...

3.9重建二叉树(各种方案的分析比较及扩展问题的分析)

1、二叉树遍历分析 二叉树的遍历有四种,先序、中序、后序和层序,其中,中序遍历配合其中任何一种遍历的结果都可以重建二叉树,先序和后序配合却无法重建二叉树。本人觉得编程之美书上代码清单3-12给出的代码...

平衡二叉树的构建 用函数回调来扩展程序 c语言实现

构建平衡二叉树                              6          ...

剑指offer给定二叉树,求中序遍历的下一个 节点,前序遍历,后序遍历扩展

题目链接https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e?tpId=13&tqId=11210&tPage=1&rp...

二叉树扩展之三叉树C++类模板的实现

简介 二叉树是递归定义的,这里的三叉树同样也是。 三叉树分为左子树,中子树,右子树。 三叉树的遍历顺序方式,我把它则分为四种: (1)先序:根->左->中->右 (1)中1序:左->根->中->右 ...

3.10分层遍历二叉树-扩展问题

1.问题定义 给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。 要求遍历输出的结果分别为图2,图3和图4...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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