C语言实现计算二叉树结点的数目
时间: 2024-05-27 08:04:58 浏览: 116
以下是C语言实现计算二叉树结点数目的代码和解释:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点结构体
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为根节点
}
return count;
}
int main() {
// 创建一棵二叉树
BiTree T = (BiTree)malloc(sizeof(BiTNode));
T->data = 'A';
T->lchild = (BiTree)malloc(sizeof(BiTNode));
T->lchild->data = 'B';
T->lchild->lchild = NULL;
T->lchild->rchild = NULL;
T->rchild = (BiTree)malloc(sizeof(BiTNode));
T->rchild->data = 'C';
T->rchild->lchild = NULL;
T->rchild->rchild = NULL;
// 计算二叉树结点数目并输出
int nodeNum = GetNodeNumber(T);
printf("The number of nodes in the binary tree is: %d\n", nodeNum);
return 0;
}
```
解释:
1. 首先定义了二叉树结点的结构体,包括数据域和左右子树指针。
2. 定义了计算二叉树结点数目的函数`GetNodeNumber`,该函数采用递归的方式计算二叉树结点数目。如果当前结点不为空,则递归计算左右子树的结点数目并加上1(当前结点)。
3. 在`main`函数中创建了一棵二叉树,并调用`GetNodeNumber`函数计算二叉树结点数目并输出。
--相关问题--:
1. 如何判断一个二叉树是否为满二叉树?
2. 如何
阅读全文