判定给定二叉树是否为完全二叉树的c语言代码
时间: 2023-12-21 21:19:25 浏览: 142
判断二叉树是否是完全二叉树
5星 · 资源好评率100%
以下是判断二叉树是否为完全二叉树的 C 语言代码:
```c
#include <stdbool.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
bool isCompleteTree(struct TreeNode* root) {
if (!root) {
return true;
}
struct TreeNode** queue = (struct TreeNode**)malloc(sizeof(struct TreeNode*) * 1000);
int front = 0, rear = 0;
bool flag = false;
queue[rear++] = root;
while (front < rear) {
struct TreeNode* node = queue[front++];
if (node->left) {
if (flag) {
return false;
}
queue[rear++] = node->left;
} else {
flag = true;
}
if (node->right) {
if (flag) {
return false;
}
queue[rear++] = node->right;
} else {
flag = true;
}
}
free(queue);
return true;
}
```
该算法与 Python 代码类似,使用 BFS 遍历二叉树,当遍历到第一个没有左子树或右子树的节点时,将 flag 标记为 true,表示后面的节点都应该没有子树。如果后面的节点还有子树,则说明该二叉树不是完全二叉树。需要注意的是,C语言中需要手动分配和释放内存。
阅读全文