通过输入二叉树先序遍历和中序遍历,输出其后序遍历
2018-01-06 19:31
330 查看
题目:通过输入二叉树先序遍历和中序遍历,输出其后序遍历
输入样例:FDXEAGXDEFAG
输出样例:XEDGAF
实现代码:
#include <stdio.h> #include <string.h> struct Node{ Node *lchild; Node *rchild; char c; }Tree[50]; int loc; Node *create(){ Tree[loc].lchild=Tree[loc].rchild=NULL; return &Tree[loc++]; } char str1[30],str2[30]; void PostOrder(Node *node){ if(node->lchild!=NULL){ PostOrder(node->lchild); } if(node->rchild!=NULL){ PostOrder(node->rchild); } printf("%c",node->c); } Node *Build(int s1,int e1,int s2,int e2){ Node *T=create(); int rootIDx=0; T->c=str1[s1]; for(int i=s2;i<=e2;i++){ if(str1[s1]==str2[i]){ rootIDx=i; break; } } if(rootIDx!=s2){ T->lchild=Build(s1+1,s1+(rootIDx-s2),s2,rootIDx-1); } if(rootIDx!=e2){ T->rchild=Build(s1+(rootIDx-s2)+1,e1,1+rootIDx,e2); } return T; } int main(){ while(scanf("%s",str1)!=EOF){ scanf("%s",str2); int L1=strlen(str1); int L2=strlen(str2); loc=0; Node *N=Build(0,L1-1,0,L2-1); PostOrder(N); printf("\n"); } return 0; }测试输出:
相关文章推荐
- 通过输入二叉树先序遍历和中序遍历,输出其后序遍历
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 建一棵二叉树,能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)(二)
- 先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 剑指offer面试题:输入某二叉树的前序遍历和中序遍历的结果,输出后序遍历结果。
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 先序顺序输入结点值创建二叉树,并按先序,中序和后序遍历输出
- 已知二叉树的先序遍历和中序遍历序列,输出后序遍历序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 二叉树由先序遍历和中序遍历输出后序遍历
- Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
- 剑指offer面试题:输入某二叉树的前序遍历和中序遍历,输出后序遍历
- 通过先序遍历和中序遍历后的序列还原二叉树(实现方法)
- 给定二叉树的先序遍历和中序遍历,输出它的后序遍历序列
- 根据先序遍历和中序遍历得出二叉树。最终以后序遍历的形式输出。
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列