1.解题思路
通过阅读本题给出的树格式可以看出类似于给定层序遍历求先序遍历,通过栈这一结构,开始将根节点入栈,循环每次弹出栈顶并搜索栈顶的左右节点入栈,注意入栈顺序是右左,这样出栈时才能是左右,当栈为空时循环结束。
2.通过代码
#include<iostream>
#include<vector>
#include<stack>
using namespace std;
int main()
{
vector<char> res;
vector<string> node;
stack<char> ans;
int n,i;
cin>>n;
for(i=0;i<n;i++)
{
string a;
cin>>a;
node.push_back(a);
}
ans.push(node[0][0]);
while(!ans.empty())
{
if(ans.top()=='*')
{
ans.pop();
continue;
}
char tem=ans.top();
res.push_back(tem);
ans.pop();
for(i=0;i<node.size();i++)
{
if(node[i][0]==tem)
{
ans.push(node[i][2]);
ans.push(node[i][1]);
break;
}
}
}
for(i=0;i<res.size();i++)
{
cout<<res[i];
}
return 0;
}