R6-1 二叉树 - 10. 求结点数 分数 8 作者 李祥 单位 湖北经济学院 请编写函数,求二叉树的结点个数。 函数原型 int BinTreeNumNode(const TNODE *root); 说明:root 为二叉树的根指针,函数值为二叉树的结点数。 在“BinTree.h”中声明函数,在“BinTree.c”中实现函数。 BinTree.h ...... int BinTreeNumNode(const TNODE *root); ...... BinTree.c ...... /* 你提交的代码将被嵌在这里 */ 打开“main.c”,修改主函数对以上函数进行测试。 main.c #include <stdio.h> #include "BinTree.h" int main() { TNODE *r; BinTreeCreate(&r); BinTreeInput(&r); printf("%d\n", BinTreeNumNode(r)); BinTreeDestroy(&r); return 0; } 题图.jpg 输入样例 EIBJ##H###DF#A##G#C## 输出样例 10
时间: 2024-02-07 10:04:15 浏览: 48
非常抱歉,刚才的代码有误,以下是正确的代码实现:
```
int BinTreeNumNode(const TNODE *root) {
if (root == NULL) {
return 0;
}
return BinTreeNumNode(root->left) + BinTreeNumNode(root->right) + 1;
}
```
这个算法的思想是对于当前节点,其结点个数为其左子树结点个数加上右子树结点个数再加上 1。递归终止条件是当前节点为 NULL,此时结点个数为 0。
在测试时,可以使用给定的 `main` 函数。
阅读全文