满二叉树 已知前序 求其后序

#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编辑  收藏  举报

导航