文章

121

粉丝

0

获赞

258

访问

15.7k

头像
二叉树遍历2 题解:

#include<iostream>
using namespace std;

struct tr{
	char c;
	tr *l,*r;
};

void print(tr *t)
{
	if(t==nullptr)
		return;
	print(t->l),print(t->r);
	cout<<t->c;
}

void create(tr* &t,string lift,string mid)
{
	if(lift.size()==0)
	{
		t=nullptr;
		return;
	}
	t=new tr;
	char c=lift[0];
	t->c=c;
	int index=mid.find(c);
	string mid_l=mid.substr(0,index);
	string mid_r=mid.substr(index+1);
	string lift_l=lift.substr(1,mid_l.size());
	string lift_r=lift.substr(lift.size()-mid_r.size());
	create(t->l,lift_l,mid_l),create(t->r,lift_r,mid_r);
}

string pre,order;

int main()
{
	while(cin>>pre>>order)
	{
		tr *t;
		create(t,pre,order);
		print(t);
		puts("");
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发