如何用C语言实现判断完全二叉树
时间: 2024-11-06 20:14:42 浏览: 31
二叉树C语言实现
5星 · 资源好评率100%
在C语言中,我们可以用递归的方式来判断一个二叉树是否是完全二叉树。完全二叉树是一种特殊的二叉树,除了最后一层外,每一层都是满的,并且所有叶子节点都集中在最右边。
以下是判断一个二叉树是否为完全二叉树的C语言函数示例:
```c
#include <stdbool.h>
#include <stdio.h>
// 定义二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 辅助函数,检查空树或只有一个节点的树是否是完全二叉树
bool isCompleteBinaryTreeAux(TreeNode* root) {
if (root == NULL) {
return true;
} else if (root->left != NULL && root->right != NULL) {
// 如果有左右子节点,需要递归检查它们是否也是完全二叉树
return isCompleteBinaryTreeAux(root->left) && isCompleteBinaryTreeAux(root->right);
} else {
// 如果只有左或右子节点,则仅检查这一边是否完全二叉
return isCompleteBinaryTreeAux(root->left || root->right ? root->left : root->right);
}
}
// 主函数,检查整个二叉树
bool isCompleteBinaryTree(TreeNode* root) {
return isCompleteBinaryTreeAux(root);
}
int main() {
// 创建一个二叉树实例并测试该函数
TreeNode* tree = ...; // 根据实际构建你的二叉树
bool result = isCompleteBinaryTree(tree);
printf("Is the binary tree complete? %s\n", result ? "Yes" : "No");
return 0;
}
```
阅读全文