POJ 2255 Tree Recovery(已知前序&中序,求后序)
发布日期:2021-07-01 03:39:51 浏览次数:2 分类:技术文章

本文共 973 字,大约阅读时间需要 3 分钟。

1. 题目链接:

2. 题目大意:

给定二叉树的前序和中序序列,输出其后序序列

3. 思考过程:

在这里插入图片描述

4. AC代码

在这里插入图片描述

/** * @description: 给出前序和中序二叉树节点序列,求后序二叉树节点输出序列 * @author: michael ming * @date: 2019/5/21 18:49 * @modified by:  */#include 
#include
using namespace std;void postOrder(string &pre, int pre_start, int pre_end, string &in, int in_start, int in_end){
char root = pre[pre_start]; //前序的根节点 int pos = in.find(root); //在中序里找到root int L_len = pos - in_start, R_len = in_end - pos; //计算左右子树长度 if(L_len >= 1) postOrder(pre, pre_start+1, pre_start+L_len, in, in_start, pos-1); //对左子树递归调用 if(R_len >= 1) postOrder(pre, pre_start+L_len+1, pre_end, in, pos+1, pos+R_len); //对右子树递归调用 cout << root; //后序,最后输出根节点}int main(){
string preOrder, inOrder; while(cin >> preOrder >> inOrder) {
//参数(前序字符,前序开始p,前序结束p,中序字符,中序开始p,中序结束p) postOrder(preOrder, 0, preOrder.size()-1, inOrder, 0, inOrder.size()-1); cout << endl; } return 0;}

转载地址:https://michael.blog.csdn.net/article/details/90417310 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:数据结构--堆 Heap
下一篇:POJ 2967 (水题,考察putchar()按位输入)

发表评论

最新留言

不错!
[***.144.177.141]2024年04月22日 05时39分11秒