完全二叉树判断c语言
时间: 2023-11-23 21:51:57 浏览: 45
以下是判断完全二叉树的C语言代码:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100
// 定义二叉树结点
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 判断是否为完全二叉树
bool isCompleteTree(TreeNode* root) {
if (!root) {
return true;
}
// 定义队列
TreeNode* queue[MAX_SIZE];
int front = 0, rear = 0;
queue[rear++] = root;
bool flag = false; // 标记是否出现过空结点
while (front < rear) {
TreeNode* node = queue[front++];
if (!node->left) {
flag = true;
} else if (flag) {
return false;
} else {
queue[rear++] = node->left;
}
if (!node->right) {
flag = true;
} else if (flag) {
return false;
} else {
queue[rear++] = node->right;
}
}
return true;
}
int main() {
// 构造一棵完全二叉树
TreeNode node1 = {1, NULL, NULL};
TreeNode node2 = {2, NULL, NULL};
TreeNode node3 = {3, NULL, NULL};
TreeNode node4 = {4, NULL, NULL};
TreeNode node5 = {5, NULL, NULL};
TreeNode node6 = {6, NULL, NULL};
TreeNode node7 = {7, NULL, NULL};
node1.left = &node2;
node1.right = &node3;
node2.left = &node4;
node2.right = &node5;
node3.left = &node6;
node3.right = &node7;
if (isCompleteTree(&node1)) {
printf("This is a complete binary tree.\n");
} else {
printf("This is not a complete binary tree.\n");
}
return 0;
}
```