因为每棵树均存在上一棵树的右节点,故往右dfs,每找一个计数器+1
int num=0;
void count(tree *p)
{
if(p==NULL)return;
num++;
count(p->r );//递归右子树
}
完整代码:
#include<iostream>
using namespace std;
typedef struct Tree
{
char data;
struct Tree *l;
struct Tree *r;
}tree;
int num=0;
void creat(tree *&p)
{
char x;
cin>>x;
if(x=='#')return;
p=new tree;
p->data =x;p->l =NULL;p->r =NULL;
creat(p->l );
creat(p->r );
}
void count(tree *p)
{
if(p==NULL)return;
num++;
count(p->r );
}
int main()
{
tree *t;
creat(t);
count(t);
cout<<num;
return 0;
}