叉树中指定结点的双亲结点。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的双亲结点。注意输入数据序列中的“#”字符和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。
输入
输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。
输出
用一行输出该用例对应的二叉树中指定结点的双亲结点。若相应双亲结点不存在则以“#”代替。
样例输入
A##
A
ABC####
B
样例输出
#
A
#include<bits/stdc++.h>
#define ll long long
//#define int ll
#define pii pair<int,int>
#define mem(a,b) memset(a,b,sizeof(a))
#define endl '\n'
#define N 100005
const int inf=0x3f3f3f3f;
const double pi=acos(-1.0);
using namespace std;
char cc;
int s=0;
typedef struct TNodes
{
char data;
TNodes *lnode,*rnode;
}*TNode;
void Creat(TNode &t)
{
char c;
cin>>c;
if(c=='#') t=NULL;
else
{
t=new TNodes;
t->data=c;
Creat(t->lnode);
Creat(t->rnode);
}
}
void sc(TNode &t)
{
if(!t) return;
if(t->lnode&&t->lnode->data==cc||t->rnode&&t->rnode->data==cc)
{
cout<<t->data;
return;
}
sc(t->lnode);
sc(t->rnode);
}
signed main()
{
TNode t;
Creat(t);
cin>>cc;
if(t->data==cc) cout<<"#";
else sc(t);
return 0;
}