扩展二叉树

原创 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;
}

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

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

扩展二叉树(树)

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

【数据结构】扩充先序遍历创建二叉树

之前接触和学习的大多是二叉树的应用,即:二叉树的遍历、查找和排序等等。今天小编要介绍的是二叉树的创建。 为了在程序中更有效和直观的创建一棵二叉树,可以使用,扩充先序遍历,来创建二叉树。 【定义】 扩充...
  • u013036274
  • u013036274
  • 2016年12月14日 16:57
  • 1596

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

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

【数据结构】扩充先序遍历创建二叉树

之前接触和学习的大多是二叉树的应用,即:二叉树的遍历、查找和排序等等。今天小编要介绍的是二叉树的创建。 为了在程序中更有效和直观的创建一棵二叉树,可以使用,扩充先序遍历,来创建二叉树。 【定义】 扩充...
  • u013036274
  • u013036274
  • 2016年12月14日 16:57
  • 1596

伸展树 - 二叉搜索树的扩展2

目录 伸展树的介绍 伸展树的C实现 1 节点定义 2 旋转 3 伸展树的伸展 4 搜索 4 伸展树的插入和删除 全部代码和参考资料1. 伸展树的介绍伸展树(splay tree)是一种搜索二叉树,它能...
  • quzhongxin
  • quzhongxin
  • 2015年04月30日 10:47
  • 712

树根据扩展先序遍历建立二叉树及其非递归遍历

此部分是对于数据结构的边缘部分的理解 #include #include using namespace std; struct node { char data; no...
  • fengsigaoju
  • fengsigaoju
  • 2015年10月10日 23:19
  • 835

数据结构-二叉树和二叉查找树

先按树-二叉树-二叉查找树的顺序解释会比较清楚。 一,树 树(Tree)是n(n≥0)个结点的有限集。在任意一棵非空树中: (1)有且仅有一个特定的被称为根(Root)的结点; (2)当n>1...
  • tuke_tuke
  • tuke_tuke
  • 2015年12月20日 17:44
  • 2071

数据结构之二叉树链表

2.二叉树      二叉树是n个结点的有限集合,该集合或者为空集(称为空二叉树),或者有一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成      特点:          ...
  • followMyInclinations
  • followMyInclinations
  • 2015年10月22日 13:08
  • 2090

以二叉链表的方式创建一棵二叉树,并以非递归算法中序输出;计算二叉树的繁茂度,并判断二叉树是否为完全二叉树

以二叉链表的方式创建一棵二叉树,并以非递归算法中序输出;计算二叉树的繁茂度,并判断二叉树是否为完全二叉树...
  • jin2333333
  • jin2333333
  • 2016年04月22日 20:59
  • 2533
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:扩展二叉树
举报原因:
原因补充:

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