欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

1339:求后序遍历

时间:2024-05-05 12:49 作者:admin 点击:
#include iostreamusing namespace std;/*先序 gzzzzzyyy1,mid mid+1中序 zzzzzgyyy0,mid mid+1后序 zzzzzyyyg0,mid mid,zxr.size()*/string xx,zx;void findtree(string xx,string zx){if(xx.size()==0||zx.size()==0) return ;int mid=zx.find(xx[0])
#include <iostream>
using namespace std;
/*
先序 gzzzzzyyy
	1,mid  mid+1
中序 zzzzzgyyy
	0,mid  mid+1
后序 zzzzzyyyg
	0,mid  mid,zxr.size()
*/
string xx,zx;
void findtree(string xx,string zx){
	if(xx.size()==0||zx.size()==0) return ;
	int mid=zx.find(xx[0]);//查找xx[0]在zx中第一次出现的下标
	string zxl=zx.substr(0,mid);//从0开始,截取mid长度
	string zxr=zx.substr(mid+1);//从mid+1开始,截取到末尾
	string xxl=xx.substr(1,mid);
	string xxr=xx.substr(mid+1);
	//---分解左右子树⬆️----递归输出⬇️
	findtree(xxl,zxl);
	findtree(xxr,zxr);
	cout<<xx[0];
	//如果输入的是后序中序,怎样求先序
}
int main()
{
	cin>>xx>>zx;
	findtree(xx,zx);
	return 0;
}


(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%