#include<iostream>
#include<cmath>
#include<vector>
#include<string>
#include<map>
#include<list>
#include<stack>
#include<queue>
#include<algorithm>
#define ll long long
#define elif else if
using namespace std;
void solve(char array[], vector<int>*ans, int now, char a);
int main()
{
char a;
char array[1026] = { 0 };
int p = 2;
cin >> a;
while (cin >> a)
{
if (p == 3)
break;
if (a == '#')
{
array[p] = a;
if (p % 2 == 0)
++p;
else
{
do
{
p = (p - 1) / 2;
} while (p % 2 == 1);
++p;
}
}
else
{
array[p] = a;
p *= 2;
}
}
vector<int>* ans = new vector<int>;
solve(array, ans, 2, a);
return 0;
}
void solve(char array[], vector<int>* ans,int now,char a)
{
if (array[now] == 0||array[now] =='#')
return;
ans->push_back(now);
if (array[now] == a)
{
cout << array[(*ans)[0]];
for (int i = 1; i < ans->size(); ++i)
{
cout << "->" << array[(*ans)[i]];
}
cout << endl;
ans->pop_back();
return;
}
else
{
solve(array, ans, now * 2, a);
solve(array, ans, now * 2+1, a);
ans->pop_back();
return;
}
}
东华大学oj二叉树:根到x的路径
最新推荐文章于 2024-07-14 15:36:20 发布