使用C++写一个返回二叉查找树节点个数的函数
时间: 2024-05-05 20:15:51 浏览: 94
下面是一个使用C语言编写的返回二叉查找树节点个数的函数示例:
```c
#include <stdio.h>
#include <stdlib.h>
/* 二叉树节点结构体 */
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
/* 创建新节点 */
TreeNode* createNode(int val) {
TreeNode* node = (TreeNode*) malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
/* 向二叉查找树中插入新节点 */
TreeNode* insertNode(TreeNode* root, int val) {
if (root == NULL) {
return createNode(val);
}
if (val < root->val) {
root->left = insertNode(root->left, val);
} else {
root->right = insertNode(root->right, val);
}
return root;
}
/* 计算二叉查找树中节点个数 */
int countNodes(TreeNode* root) {
if (root == NULL) {
return 0;
}
return 1 + countNodes(root->left) + countNodes(root->right);
}
int main() {
/* 创建二叉查找树 */
TreeNode* root = createNode(5);
insertNode(root, 3);
insertNode(root, 7);
insertNode(root, 2);
insertNode(root, 4);
insertNode(root, 6);
insertNode(root, 8);
/* 计算节点个数 */
int nodeCount = countNodes(root);
printf("Node count: %d\n", nodeCount);
return 0;
}
```
在这个示例中,我们首先定义了一个`TreeNode`结构体,表示二叉树节点。然后定义了一个`createNode`函数,用于创建新节点。
接着定义了一个`insertNode`函数,用于向二叉查找树中插入新节点。这个函数会递归地查找插入位置,直到找到合适的位置插入新节点。
最后,我们定义了一个`countNodes`函数,用于计算二叉查找树中的节点个数。这个函数也是递归实现的,每次递归会把当前节点的子节点个数加起来,并加上当前节点本身。
在`main`函数中,我们创建了一个二叉查找树,并计算了它的节点个数。最后将节点个数打印出来。
阅读全文