[C++]数据结构:二叉树中已知先序中序求后序的递归方法

来源:互联网 发布:linux wc l 少一行 编辑:程序博客网 时间:2024/05/16 12:33
#include <iostream>using namespace std;const int MaxSize=20;//数组的最大尺寸int p;//一个临时的数字用来标记当前操作的数组的位置char MidOrder[MaxSize];//用来存储中序遍历顺序的数组char PreOrder[MaxSize];//用来存储先序遍历顺序的数组//初始化的方法void Init(){cout << "In-order:";cin >> MidOrder;cout << "Pre-order:";cin >> PreOrder;cout << "Post-order:";p=0;}//递归输出后序遍历的方法void Find(char Mid[MaxSize]){int q;char temp[MaxSize];    if (Mid[0]==NULL) return;for (int i=0;Mid[i]!='\0';i++){if (Mid[i]==PreOrder[p]){ q=i; //得出q //即为当前数组中第q个是根节点}}for (i=0;i<q;i++){temp[i]=Mid[i];//把根节点前面的节点存到t数组中}temp[q]='\0';//标志字符串结束p++;Find(temp);//在根节点前的子树继续进行后序遍历for (i=q+1;Mid[i]!='\0';i++)//将节点后面的传入到temp数组中temp[i-q-1]=Mid[i];temp[strlen(Mid)-1-q]='\0';//加上\0标志字符串的终点Find(temp);//在根节点后的子树继续进行后序遍历cout << Mid[q];//最后输出根节点return;}void main(){Init();Find(MidOrder);cout<<endl;}

原创粉丝点击