【递归】已知中序遍历,后序遍历,求前序遍历

#include<iostream>
#include <cstdio>
#include <string>
using namespace std;
typedef struct node{
	char data;
	struct node *lchild,*rchild;
}BTNode;
void CreateRoot(BTNode *&root,string post,string in){
	if(post.empty()) return ;
	root = new BTNode();
	root->data = *(post.end() - 1);
	int pos = in.find(*(post.end() - 1));///string函数
	string il,ir,pl,pr;
	il = in.substr(0,pos);
	ir = in.substr(pos+1);
	pl = post.substr(0,pos);
	pr = post.substr(pos,ir.length());
	//cout<<il<<endl<<ir<<endl<<pl<<endl<<pr<<endl;
	CreateRoot(root->lchild,pl,il);
	CreateRoot(root->rchild,pr,ir);
}
void pre(BTNode *root){
	if(!root) return ;
	cout<<root->data;
	pre(root->lchild);
	pre(root->rchild);
}
int main(){
	string p,m;
	cin>>p>>m;
	BTNode *root;
	CreateRoot(root,p,m);
	pre(root);
	cout<<endl;
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值