树的存储结构
typedef struct BiTNode
{
char data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
代码实现
int GetNodeNumber(BiTree T)
{
int count =0;
if(T!=NULL)
{
count=GetNodeNumber(T->lchild)+GetNodeNumber(T->rchild)+1;//此处加的1为根节点
//不能写成单独的,否则存在重复置0问题
//GetNodeNumber(T->lchild);
//GetNodeNumber(T->rchild)
}
return count;
}
算法思路
采用递归实现,当根节点不为空时候,分别计算其左右孩子的根节点数,最后再加上其本身(+1)。而分别计算其左右孩子的根节点的时候,就可以对其进行一个递归运算,当其左右孩子结点分别作为根节点为空时,说明其没有左右孩子,此时单独加上一个根节点即可。