求二叉树结点总数代码
二叉树结点总数.h
#include
#include
#include
//预定义常量
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2
//函数结果状态码
typedef int Status;
//二叉树数据类型
typedef char TElemType;
//二叉树结点类型定义
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
} BiTNode,*BiTree;
//函数原型声明
Status CreateBiTree(BiTree &T);//创建二叉链表(按先序序列建立二叉树) Status NodeNum(BiTree T,int *n);
.cpp 文件
#include"二叉树结点总数.h"
Status CreateBiTree(BiTree &T){
char ch; ch=getchar();
if (ch=='#') T=NULL;
else {
if(!(T=(BiTree)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data=ch; //生成根节点
CreateBiTree(T->lchild); //构造左子树 CreateBiTree(T->rchild); //构造右子树 }
return OK;
}//CreateBiTree
Status NodeNum(BiTree T,int *n) { if (T) {
if(T->data) (*n)++;
if (NodeNum(T->lchild,n))
}
.cpp 文件
#include"二叉树结点总数.h"
void main(){
BiTree T;
} int n=0,*p; p=&n; printf("创建二叉树:"); CreateBiTree(T); NodeNum(T,p); printf("二叉树结点总数为:%d\n",*p); if(NodeNum(T->rchild,n)) return OK; return ERROR; }else return OK;