利用分治法计算二叉树中分支点的个数 c语言实现
时间: 2024-09-23 09:04:57 浏览: 51
C语言用分治法实现数组归并排序算法实现
利用分治法计算二叉树中分支点(节点有两个孩子的节点)的个数通常涉及递归地遍历整个树结构。以下是简单的 C 语言实现:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义二叉树结点结构
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
int countBranchNodes(TreeNode* root) {
// 如果根节点为空,返回0
if (root == NULL) return 0;
// 如果根节点只有一个孩子(叶子节点),不是分支点
if (root->left == NULL && root->right == NULL) return 0;
// 否则,左子树和右子树的分支点数之和加1(根本身也是分支点)
return countBranchNodes(root->left) + countBranchNodes(root->right) + 1;
}
int main() {
// 创建一个示例二叉树并初始化
TreeNode* tree = ...; // 根据实际构造树
// 计算分支点的数量
int branchPoints = countBranchNodes(tree);
printf("二叉树中有 %d 个分支点。\n", branchPoints);
return 0;
}
```
这个函数`countBranchNodes`会递归地检查每个节点是否为分支点,并累计计数。在`main`函数中,你需要先创建好二叉树并传递给该函数。
阅读全文