满二叉树 已知前序 求其后序
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
void build(string s, int l1, int r1) {
char root = s[l1];//暂存当前的根节点 子树遍历完后输出
if (l1 + 1 <= r1) {
l1++; //进到下一个子树 更新根结点 也就是左端+1
//左子树从 l+1 -> (l1 + r1) / 2
build(s, l1, (l1 + r1) / 2); //左子树
//右子树从 (l1 + r1) / 2 + 1 -> r1
build(s, (l1 + r1) / 2 + 1, r1);//右子树
}
cout << root << " "; //输出根
}
signed main() {
string s;
s = "ABDHIEJKCFLMGNO";
int len = s.size();
build(s, 0, len - 1);
}
posted on 2024-11-07 23:00 swj2529411658 阅读(2) 评论(0) 编辑 收藏 举报