用C语言的伪代码判断一颗二叉树是否是完全二叉树
时间: 2024-10-14 15:10:09 浏览: 24
c语言编程题之树操作二叉树的最大深度.zip
在C语言中,我们可以使用递归的方式来判断一棵二叉树是否是完全二叉树。这里是一个简单的伪代码描述:
```c
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 判断是否为完全二叉树的辅助函数
bool isCompleteBinaryTree(TreeNode* root) {
if (root == NULL) return true; // 空树或只有一个节点都是完全二叉树
// 如果某个节点存在但它的左孩子为空,说明到当前为止都是完整的
if (root->left != NULL && root->right == NULL) {
return isCompleteBinaryTree(root->left); // 仅检查左子树是否也是完全二叉树
} else if (root->left == NULL && root->right != NULL) {
return isCompleteBinaryTree(root->right); // 同理,仅检查右子树
} else { // 都有左右孩子,需要同时检查
return isCompleteBinaryTree(root->left) && isCompleteBinaryTree(root->right);
}
}
// 主函数调用
int main() {
TreeNode* root = ...; // 初始化二叉树根节点
if (isCompleteBinaryTree(root)) {
printf("The tree is a complete binary tree.\n");
} else {
printf("The tree is not a complete binary tree.\n");
}
return 0;
}
```
这个伪代码假设了`TreeNode`类型已经定义,并且`val`, `left`, 和 `right` 分别代表节点值、左子节点和右子节点。`isCompleteBinaryTree` 函数会从根节点开始递归地检查每一层的节点数,如果所有层次除了最后一层外都完全填满,且最底层的节点都在左侧,则认为该树是完全二叉树。
阅读全文