输出利用先序遍历创建的二叉树中的指定结点的度
1000(ms)
10000(kb)
1786 / 6130
利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的度。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的度。注意输入数据序列中的字符“#”和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。
输入
输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。
输出
用一行输出该用例对应的二叉树中指定结点的度。
样例输入
A## A ABC#### B
样例输出
0 1
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct node
{
char data;
struct node *l,*r;
}Tree;
int obj=0;
void init(Tree *&l)
{
char ch;
cin>>ch;
if(ch=='#') l=NULL;
else
{
l=(Tree *)malloc(sizeof(Tree));
l->data=ch;
init(l->l);
init(l->r);
}
}
void getnode(Tree *l,char ch)
{
if(l)
{
if(l->data==ch)
{
if(l->l!=NULL&&l->r!=NULL) obj+=2;
else if(l->l!=NULL||l->r!=NULL) obj++;
}
if(l->l!=NULL) getnode(l->l,ch);
if(l->r!=NULL) getnode(l->r,ch);
}
}
int main()
{
Tree *l;
init(l);
char ch;
cin>>ch;
getnode(l,ch);
cout<<obj;
return 0;
}