求二叉树的分枝节点数用C语言来编译
时间: 2024-12-19 09:22:49 浏览: 3
C语言递归方式统计二叉树叶子节点个数.zip
在C语言中,计算一棵二叉树的分支节点数通常涉及到递归算法。对于每个非叶子节点(即分支节点),它有两个子节点。因此,分支节点数等于所有节点数减去1(根节点不算分支)。这里有一个简单的函数示例来计算二叉树的分支节点数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
int countBranchNodes(TreeNode* root) {
// 如果根节点为空,返回0
if (root == NULL) {
return 0;
}
// 如果根节点不是空,它是一个分支节点,所以计数加1
int branchCount = 1; // 包含根节点
// 递归地计算左子树和右子树的分支节点数并累加
branchCount += countBranchNodes(root->left);
branchCount += countBranchNodes(root->right);
return branchCount - 1; // 最终结果减去根节点
}
// 测试函数
int main() {
// 创建一个例子二叉树
TreeNode* tree = malloc(sizeof(TreeNode));
tree->val = 1;
tree->left = malloc(sizeof(TreeNode));
tree->left->val = 2;
tree->right = malloc(sizeof(TreeNode));
tree->right->val = 3;
tree->left->left = NULL;
tree->left->right = NULL;
tree->right->left = NULL;
tree->right->right = NULL;
printf("分支节点数: %d\n", countBranchNodes(tree));
free(tree); // 清理内存
return 0;
}
```
阅读全文