UVa 536 - Tree Recovery
2014-06-09 22:22
351 查看
题目:一直树的前序遍历和中序遍历,求后序遍历。
分析:递归。注意树的前序,中序,后序遍历说的是根的访问顺序。
前根序:根,左子树,右子树;
中根序:左子树,根,右子树;
后跟序:左子树,右子树,根。
根据上面的三个式,观察上面三个结构就可以得到求解方法。
对于每个子树,前根序第一个是根,找到它在中根序的位置,就能确定左右子树,然后递归求解。
说明:好多年前写的程序了(⊙_⊙)。
分析:递归。注意树的前序,中序,后序遍历说的是根的访问顺序。
前根序:根,左子树,右子树;
中根序:左子树,根,右子树;
后跟序:左子树,右子树,根。
根据上面的三个式,观察上面三个结构就可以得到求解方法。
对于每个子树,前根序第一个是根,找到它在中根序的位置,就能确定左右子树,然后递归求解。
说明:好多年前写的程序了(⊙_⊙)。
#include <iostream> #include <cstring> using namespace std; char TF[27]; char TM[27]; void TL( int p1, int p2, int q1, int q2, int root ) { if ( p1 > p2 ) return; for ( root = q1 ; TM[root] != TF[p1] ; ++ root ); TL( p1+1, p1+root-q1, q1, root-1, 0 ); TL( p1+root-q1+1, p2, root+1, q2, 0 ); cout << TM[root]; } int main() { while ( cin >> TF >> TM ) { int L = strlen(TF)-1; TL( 0, L, 0, L, 0 ); cout << endl; } return 0; }
相关文章推荐
- Tree Recovery UVA - 536
- [UVA 536] Tree Recovery 二叉树&dfs
- Tree Recovery UVA - 536
- UVa-536 习题6-3 二叉树重建(Tree Recovery,ULM 1997)
- Tree Recovery-UVA 536
- [UVA548]Tree[根据中序后序构建树][UVA536]Tree Recovery[根据前序中序构建树]
- 习题6-3 二叉树重建(Tree Recovery, ULM 1997, UVa 536)
- Uva536 Tree Recovery 【递归建树】【习题6-3】
- uva 536 Tree Recovery 【二叉树】
- Tree Recovery UVA536
- UVa 536:Tree Recovery(水题)
- uva536-Tree Recovery-二叉树遍历
- 习题6-3 UVA 536 Tree Recovery 二叉树重建
- UVa, 536 Tree Recovery
- UVA 536 Tree Recovery 二叉树重建(重建二叉树+DFS)
- UVA536 Tree Recovery
- 二叉树重建(Tree Recovery ,UVa536)
- 536 - Tree Recovery
- 二叉树重建 uva 536
- UVA 536——Tree Recovery