POJ 2255 Tree Recovery 二叉树遍历

来源:互联网 发布:南开大学网络教育专业 编辑:程序博客网 时间:2024/05/19 09:02

题意:给出一棵二叉树的先序遍历和中序遍历,输出它的后序遍历。
题解:

#include <iostream>using namespace std;char preorder[30], inorder[30], postorder[30];int len;void travel ( int pStart, int pEnd, int inStart, int inEnd ){if ( pStart > pEnd ) return;postorder[--len] = preorder[pStart];if ( pStart == pEnd ) return;int i;for ( i = inStart; i <= inEnd; i++ )if ( inorder[i] == preorder[pStart] )break;travel ( pStart + i - inStart + 1, pEnd, i + 1, inEnd );travel ( pStart + 1, pStart + i - inStart, inStart, i - 1 );}int main(){while ( cin >> preorder >> inorder ){len = strlen(preorder);memset(postorder,0,sizeof(postorder));postorder[len] = '\0';travel ( 0, len - 1, 0, len - 1 );cout << postorder << endl;}return 0;}


原创粉丝点击