注册 登录
编程论坛 数据结构与算法

怎么求二叉树的结点数,并返回结点数。下面的程序错在哪啊???求助啊!!!

qinyao 发布于 2013-05-09 19:29, 1401 次点击
怎么求二叉树的结点数,并返回结点数。下面的程序错在哪啊???求助啊!!!
#include "stdafx.h"
#include "stdlib.h"
typedef int ElemType;
struct BTreeNode{
    ElemType data;
    struct BTreeNode *left,*right;
};
  
int BTreeCount(struct BTreeNode* BT)
{   int n=0,m=0;
    if(BT=NULL)
      return (0);
    else
    {
       BTreeCount(BT->left );
         n++;
        
      
         BTreeCount(BT->right);
         m++;

      return (n+m);
      
      }
   
}
5 回复
#2
笑傲2013-05-09 20:24
if(BT=NULL)这里写错了吧,应该是:
if(BT == NULL)
#3
qinyao2013-05-09 21:25
原来是这样!!!呵呵,谢谢
#4
走召2013-05-09 23:14
改完这个:if(BT=NULL)这里写错了吧,应该是:
if(BT == NULL)  也不对吧
#5
azzbcc2013-05-09 23:22
程序代码:
int BTreeCount(struct BTreeNode* BT)
{
    if (!BT)           return 0;
    if (!BT->left)     return BTreeCount(BT->right) + 1;
    if (!BT->right)    return BTreeCount(BT->left)  + 1;
    return BTreeCount(BT->right) + BTreeCount(BT->left)  + 1;
}
#6
计科11022013-05-10 22:43
int nodes(btnode *b)//求二叉树的节点个数
{
    int num1,num2;
    if(b==NULL)
        return 0;
    else if(b->lchild==NULL && b->rchild == NULL)
        return 1;
    else
    {
        num1 = nodes(b->lchild);
        num2 = nodes(b->rchild);
        return (num1+num2+1);
    }
}
1