利用递归遍历节点,将满足条件的节点地址保存 ,然后统计其左右孩子个数即可
#include<iostream>
using namespace std;
typedef struct Tree
{
char x;
struct Tree *left;
struct Tree *right;
}tree;
void creat(tree *&L)
{
char s;
cin>>s;
if(s=='#')return ;
L=new tree;
L->x =s;
L->left =NULL;
L->right =NULL;
creat(L->left );
creat(L->right );
}
void serch(tree *p,char m,tree *&q)
{
if(p==NULL)return ;
if(p->x ==m)
q=p;
else
{
serch(p->left ,m,q);
serch(p->right ,m,q);
}
}
int main()
{
tree *p;
creat(p);
char m;
cin>>m;
tree *q;
serch(p,m,q);
int num=0;
if(q->left !=NULL)num++;
if(q->right !=NULL)num++;
cout<<num;
return 0;
}