c++ int countTrees(Node<elemType> *tree);输出树的个数,带注释
时间: 2024-02-22 22:56:04 浏览: 111
生成树计数
好的,以下是带注释的代码:
```c++
// 定义二叉树节点
template<typename elemType>
struct Node {
elemType data; // 节点数据
Node<elemType> *left; // 左子树指针
Node<elemType> *right; // 右子树指针
Node(const elemType &val, Node<elemType> *l = NULL, Node<elemType> *r = NULL)
: data(val), left(l), right(r) {}
};
// 计算树的个数
template<typename elemType>
int countTrees(Node<elemType> *tree) {
if (tree == NULL) { // 空树时,返回0
return 0;
} else if (tree->left == NULL && tree->right == NULL) { // 叶子节点时,返回1
return 1;
} else { // 递归计算左右子树的个数
int leftCount = countTrees(tree->left);
int rightCount = countTrees(tree->right);
return leftCount * rightCount;
}
}
```
这个函数的实现通过递归的方式计算二叉树的个数。当树为空时,返回0;当树只有一个节点时,返回1。对于非叶子节点,计算左右子树的个数,然后将它们相乘,就得到了整个树的个数。
阅读全文