已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
2017-02-19 18:36
591 查看
题目描述
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。
输入
第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。
输出
输出该二叉树的后序遍历序列。
示例输入
ABDCEF
BDAECF
示例输出
DBEFCA
关键是要找到左子树先序遍历和中序遍历所分别对应的下标,和他们的长度表达式。
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。
输入
第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。
输出
输出该二叉树的后序遍历序列。
示例输入
ABDCEF
BDAECF
示例输出
DBEFCA
关键是要找到左子树先序遍历和中序遍历所分别对应的下标,和他们的长度表达式。
#include <iostream> #include <cstring> #define MAX 50+3 using namespace std; typedef char Elem_Type; typedef struct BiTree { Elem_Type data;//数据 struct BiTree *Lchild;//左孩子 struct BiTree *Rchild;//右孩子 }BiTree; //要查找的元素 查找的地方 数组的长度 int Search_Num(Elem_Type num,Elem_Type *array,int len) { for(int i=0; i<len; i++) if(array[i] == num) return i; //return -1;//没有找到 } //前序遍历 中序遍历 中序数组长度 BiTree *Resume_BiTree(Elem_Type *front,Elem_Type *center,int len) { if(len <= 0) return NULL; BiTree *temp = new BiTree; temp->data = *front; int index = Search_Num(*front,center,len); temp->Lchild = Resume_BiTree(front+1,center,index); //关键 temp->Rchild = Resume_BiTree(front+index+1,center+index+1,len-index-1); //关键 return temp; } void PostOrderTraverse(BiTree *root)//后序遍历 { if( root != NULL) { PostOrderTraverse(root->Lchild); PostOrderTraverse(root->Rchild); cout<<root->data; } } int main(void) { Elem_Type *preorder = new Elem_Type [MAX];//前序 Elem_Type *inorder = new Elem_Type [MAX];//中序 cin>>preorder;cin>>inorder; BiTree *root = Resume_BiTree(preorder,inorder,strlen(inorder)); PostOrderTraverse(root); cout<<endl; return 0; }
相关文章推荐
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树先序、中序(中序、后序)遍历序列,输出后序(先序)遍历序列
- 先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知先序遍历和中序遍历,输出他的后序遍历序列.
- 已知二叉树的先序遍历和中序遍历序列,输出后序遍历序列
- 【数据结构作业四】以二叉链表作存储结构,建立一棵二叉树,并输出该二叉树的先序、中序、后序遍历序列、高度和其叶子结点数。
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 已知先序遍历和中序遍历,求后序遍历 && 求二叉树中节点的最大距离
- 已知二叉树的先序遍历和中序遍历序列求后序遍历序列
- 已知二叉树先序遍历,中序遍历创建二叉树并输出后序遍历
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 已知二叉树的先序遍历(preorder)和中序遍历(inorder) 或 中序和后序(postorder),还原该二叉树
- 已知一颗二叉树S的前序遍历和中序遍历序列,请编程输出二叉树S的后续遍历序列。
- 已知一颗二叉树S的前序遍历和中序遍历 序列,请编程输出二叉树S的后续遍历序列.
- 给定二叉树的先序遍历和中序遍历,输出它的后序遍历序列
- 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。