R6-1 二叉树 - 10. 求结点数
时间: 2024-01-13 21:05:56 浏览: 112
计算二叉树的结点个数
5星 · 资源好评率100%
要求二叉树的结点数,可以使用递归的方式,分别求出左子树和右子树的结点数,然后将它们加起来再加上根节点的数量即可。
具体实现如下:
```c
int count_nodes(TreeNode* root) {
if (root == NULL) { // 如果根节点为空,返回 0
return 0;
}
int left_count = count_nodes(root->left); // 左子树结点数
int right_count = count_nodes(root->right); // 右子树结点数
return left_count + right_count + 1; // 返回左子树结点数、右子树结点数和根节点的数量之和
}
```
其中,`count_nodes` 函数接受一个指向根节点的指针 `root`,返回整个二叉树的结点数。
如果 `root` 为空,说明该二叉树为空,直接返回 0。
否则,递归求出左子树和右子树的结点数,分别保存在变量 `left_count` 和 `right_count` 中。
最后,返回左子树结点数、右子树结点数和根节点的数量之和,即为整个二叉树的结点数。
可以通过如下代码进行测试:
```c
int main() {
// 构造一棵二叉树
TreeNode* root = create_tree();
// 求结点数
int count = count_nodes(root);
// 输出结果
printf("The number of nodes is: %d\n", count);
// 释放内存
destroy_tree(root);
return 0;
}
```
阅读全文