C++ 满二叉树先序序列数组获得后续序列

方法思想:除去当前序列的第一个元素e,将剩下的分成前后相等的两半,分别为当前元素e的左右子树。将e移到整个序列的末尾,再递归处理子树即可。

#include <bits/stdc++.h>
#define MaxSize 100
/*
 * Created by HarvestWu on 2018/07/18.
 */
using namespace std;

typedef char ElemType;

//满二叉树先序序列数组获得后续序列
void change(ElemType pre[],int L1,int R1,ElemType post[],int L2,int R2)
{
    if(L1<=R1)
    {
        post[R2]=pre[L1];//将pre的第一个元素放到post最后
        change(pre,L1+1,(L1+R1+1)/2,post,L2,(L2+R2-1)/2);       //递归处理前半部分
        change(pre,(L1+R1+1)/2+1,R1,post,(L2+R1-1)/2+1,R2-1);   //递归处理后半部分
    }
}

int main()
{
    ElemType pre[]={'A','B','D','E','C','F','G'};
    ElemType post[7];
    change(pre,0,6,post,0,6);
    for(int i=0;i<7;++i)
        cout<<post[i]<<' ';

    return 0;
}

 

    原文作者:满二叉树
    原文地址: https://blog.csdn.net/HarvestWu/article/details/81103165
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞