请帮我写个C++的递归算法,计算一棵二叉树的节点
时间: 2024-05-10 16:20:45 浏览: 87
数据结构二叉树实验(C++).docx
5星 · 资源好评率100%
以下是计算二叉树节点的递归算法:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int countNodes(struct TreeNode* root) {
if (root == NULL) {
return 0;
}
return 1 + countNodes(root->left) + countNodes(root->right);
}
```
这个算法定义了一个名为 `countNodes` 的函数,它接受一个指向根节点的指针,返回这棵二叉树的节点数。当根节点为空时,返回 0。否则,返回左子树节点数加右子树节点数再加上 1(因为根节点也算一个节点)。这里使用了递归,通过不断地调用自身来计算节点数。
阅读全文