P1030求先序排列
一、题目描述
二、题目分析
中序+后序推前序,不过推导的过程中出现了下标数错,尴了个大尬。。。。
三、代码实现
1 #include "bits/stdc++.h" 2 using namespace std; 3 char midTree[110]; 4 char aftTree[110]; 5 void printPre(int s,int e,int root) 6 { 7 if(s > e) 8 return; 9 int i = s; 10 while(i < e && midTree[i] != aftTree[root]) 11 i++; 12 cout << aftTree[root]; 13 printPre(s,i - 1,root - e + i - 1);//左子树长度为i - 1,那么右子树长度为e - i + 1,那么树根的位置就在root - e + i - 1 14 printPre(i + 1,e,root - 1); 15 } 16 int main() 17 { 18 cin >> midTree; 19 getchar(); 20 cin >> aftTree; 21 printPre(0,strlen(aftTree) - 1,strlen(aftTree) - 1); 22 return 0; 23 }
本文来自博客园,作者:{scanner},转载请注明原文链接:{https://home.cnblogs.com/u/scannerkk/}