c++二叉树遍历已知中序,后序求前序

主体思想,利用后序最后一个一定是根节点开始,利用后序找到根节点,利用中序输出节点。

我们以洛谷一道题举例

P1030 [NOIP2001 普及组] 求先序排列

下面是我的AC代码

#include "bits/stdc++.h"
using namespace std;
string s1,s2;
void work(int start,int end,int boot){
    if (start>end) return;
    int i=start;
    while(i>s1>>s2;
    work(0, s1.size()-1,s1.size()-1);
    return 0;
}//s1为中序,s2为后序

我们的start 和end是针对中序,而boot是针对后序来找到根节点;

主要代码

#include "bits/stdc++.h"
using namespace std;
string s1,s2;
void work(int start,int end,int boot){
    if (start>end) return;//不能加等号,这只是一个判断空节点的条件
    int i=start;
    while(i>s1>>s2;
    work(0, s1.size()-1,s1.size()-1);
    return 0;
}//s1为中序,s2为后序

我之前还有一篇写知道前中,求后的,虽然很垃圾,或许有用

你可能感兴趣的:(算法)