参考了一下网上菊苣写的递归实现二叉树的遍历。
前序遍历,也叫先根遍历,遍历的顺序是,根,左子树,右子树
遍历结果:ABDECF
遍历结果:DBEAFC
后序遍历,也叫后根遍历,遍历顺序,左子树,右子树,根
遍历结果:DEBFCA
#include <iostream>
#include <cstdio>#include <cstring>
#include <map>
#include <algorithm>
#include <sstream>
#include <cctype>
#include <set>
#include <string>
#include <stack>
using namespace std;
const int N = 1<<27;
const int inf = 0x3f3f3f3f;
void postorder(char *pre, char *medi, int k)
{
if(k<1)
return ;
int i = 0;
while(medi[i]!=pre[0])
i++;
postorder(pre+1, medi , i);//左子树
postorder(pre +i + 1 , medi + i + 1, k - i - 1 );//右子树
printf("%c", pre[0]);
}
int main()
{
int len;
char pre[105], medi[105];
scanf("%s %s", pre, medi);
len = strlen(pre);
postorder(pre, medi, len);
return 0;
}
/*
abefcigh 先序遍历
ebfagich 中序遍历
*/
输出efbgicha