用C语言编写判满二叉树
时间: 2024-11-15 20:31:12 浏览: 7
在C语言中,判断一棵二叉树是否为满二叉树,可以遍历整个树并检查每个节点是否都有两个子节点。如果所有非叶子节点都恰好有两个子节点,并且所有的叶子节点都在最底层,那么这棵树就是满二叉树。
以下是一个简单的递归函数示例,用于检查二叉树是否满足满二叉树的条件:
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
int isFullBinaryTree(TreeNode* root) {
// 如果根节点为空,则返回1,表示空树视为满二叉树
if (!root) return 1;
// 非空节点需要有左子节点和右子节点,并且它们也分别需要是满二叉树
if (!root->left && !root->right) { // 叶子节点
return (isFullBinaryTree(root->left) && isFullBinaryTree(root->right)) ? 1 : 0; // 检查左右子树是否也是满二叉树
} else if (!root->left || !root->right) { // 非叶子节点,至少有一个子节点缺失
return 0;
} else {
return isFullBinaryTree(root->left) && isFullBinaryTree(root->right); // 递归检查左右子树
}
}
```
这个函数会从根节点开始,检查当前节点是否有两个子节点,并递归地对左子树和右子树进行同样的操作。如果所有节点都能通过这种检查,那么`isFullBinaryTree`函数将返回1,表示该二叉树是满二叉树;否则返回0。
阅读全文