求先序排列-树

题目

树有三种方式遍历

先序 根左右

中序 左根右

后续 左右根

所以 我们可以从样例 求出每次dfs的根 还有每次左右分的字数 如此不断遍历下去。

代码借鉴于题解

#include<iostream>
using namespace std;
string  s1,s2;
int len1,len2;
void dfs(string sx,string sy)
{
	if(sx.size()>0)
	{
		char ch=sy[sy.size()-1];
		int g=sx.find(ch);
		cout<<ch;
		dfs(sx.substr(0,g),sy.substr(0,g));
		dfs(sx.substr(g+1,sx.size()-g-1),sy.substr(g,sy.size()-g-1));
		//左边不写默认读到底
		
		
	}
	
	
}
int main()
{
	
//中序遍历  左根右
//后   左右根
	cin>>s1>>s2;
	len1=s1.size();
	len2=s2.size();
	dfs(s1,s2);
	
	
	
	return 0;

}
posted @ 2025-04-16 20:01  LteShuai  阅读(41)  评论(0)    收藏  举报