建立二叉树并输出节点个数c语言实现
时间: 2024-10-27 18:11:31 浏览: 10
在C语言中,你可以通过递归的方式来构建二叉树,并计算节点个数。首先,定义一个结构体表示二叉树的节点:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
然后创建一个函数来插入节点并返回新根节点:
```c
TreeNode* insertNode(TreeNode* root, int val) {
if (root == NULL) {
return (TreeNode*)malloc(sizeof(TreeNode));
}
if (val < root->val) {
root->left = insertNode(root->left, val);
} else {
root->right = insertNode(root->right, val);
}
return root;
}
```
为了计算节点总数,可以在插入完成后添加一个辅助函数:
```c
int countNodes(TreeNode* root) {
if (root == NULL) {
return 0; // 空节点计数为0
} else {
return 1 + countNodes(root->left) + countNodes(root->right); // 递归计算左子树和右子树节点数,加上当前节点
}
}
```
最后,你可以像这样使用这些函数来创建二叉树并打印节点数:
```c
int main() {
TreeNode* root = NULL;
int n = 5; // 假设有n个值要插入
for (int i = 1; i <= n; ++i) {
root = insertNode(root, i);
}
int nodeCount = countNodes(root);
printf("The binary tree has %d nodes.\n", nodeCount);
return 0;
}
```
阅读全文