输出利用先序遍历创建的二叉树中的指定结点的度
1000(ms)
10000(kb)
2283 / 7175
利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的度。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的度。注意输入数据序列中的字符“#”和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。
输入
输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。
输出
用一行输出该用例对应的二叉树中指定结点的度。
样例输入
A##
A
ABC####
B
样例输出
0
1
#include<stdio.h>
#include<malloc.h>
struct BTNode
{
char data;
struct BTNode *lchlid;
struct BTNode *rchild;
};
void PreOrder(struct BTNode *&p)//先序遍历创建二叉树
{
char a;
scanf("%c",&a);
if(a=='#') p=NULL;
else
{
p=(struct BTNode*)malloc(sizeof(struct BTNode));
p->data=a;
PreOrder(p->lchlid);
PreOrder(p->rchild);
}
}
void SearchBT(struct BTNode *p,int data)//查找指定结点
{
if(p!=NULL)
{
if(p->data==data)
{
if(p->lchlid!=NULL&&p->rchild!=NULL) printf("2");
else if(p->lchlid==NULL&&p->rchild==NULL) printf("0");
else printf("1");
}
else
{
SearchBT(p->lchlid,data);
SearchBT(p->rchild,data);
}
}
}
int main()
{
struct BTNode *p;
PreOrder(p);
getchar();//抵消回车字符
char data;
scanf("%c",&data);
SearchBT(p,data);
}