题目描述
利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的度。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的度。注意输入数据序列中的字符“#”和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。
输入
输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。
输出
用一行输出该用例对应的二叉树中指定结点的度。
样例输入
A##
A
ABC####
B
样例输出
0
1
#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->data==cc)
{
if(t->lnode) s++;
if(t->rnode) s++;
cout<<s;
return;
}
else
{
sc(t->lnode);
sc(t->rnode);
}
}
signed main()
{
TNode t;
Creat(t);
cin>>cc;
sc(t);
return 0;
}