设计算法求二叉树的结点个数并用C++实现
时间: 2024-10-21 15:14:05 浏览: 35
在计算机科学中,计算给定二叉树的节点个数是一个基础任务。二叉树的节点个数可以通过递归的方式轻松得出。对于任意非空二叉树,它要么有一个根节点,要么没有。如果有,那么左子树的节点数加上右子树的节点数再加上1(根节点自身)就是总节点数。
以下是使用C++实现的一个简单函数,用于计算二叉树的节点个数:
```cpp
#include <iostream>
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
int countNodes(TreeNode* root) {
// 如果根节点为空,返回0
if (root == nullptr) {
return 0;
}
// 否则,返回根节点加左子树和右子树的节点数
return 1 + countNodes(root->left) + countNodes(root->right);
}
int main() {
// 创建一个简单的二叉树示例
TreeNode* tree = new TreeNode(1);
tree->left = new TreeNode(2);
tree->right = new TreeNode(3);
tree->left->left = new TreeNode(4);
std::cout << "The number of nodes in the binary tree is: " << countNodes(tree) << std::endl;
//记得在程序结束时释放内存
delete tree->left->left;
delete tree->left;
delete tree->right;
delete tree;
return 0;
}
```
在这个例子中,`countNodes`函数会遍历整个树并返回节点总数。当你运行这个程序,如果树是 `1 -> 2 -> 3 -> 4` 这样的结构,结果将是4。
阅读全文