判断一个二叉树是否为平衡二叉树,c语言伪代码
时间: 2024-10-08 09:25:27 浏览: 51
判断一个二叉树是否为平衡二叉树,通常我们会采用递归的方式来实现。平衡二叉树的定义是任意节点的两个子树的高度差不超过1,并且左右子树也都是平衡的。下面是一个简单的C语言伪代码示例:
```c
// 定义二叉树结点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 计算节点高度的辅助函数
int height(TreeNode* node) {
if (node == NULL)
return 0;
else
return 1 + max(height(node->left), height(node->right));
}
// 判断是否为平衡二叉树的主函数
bool isBalanced(TreeNode* root) {
if (root == NULL)
return true; // 空树本身就是平衡的
int left_height = height(root->left);
int right_height = height(root->right);
// 如果左右子树高度差超过1,则不平衡
if (abs(left_height - right_height) > 1)
return false;
// 对左、右子树分别递归判断
return isBalanced(root->left) && isBalanced(root->right);
}
```
在这个伪代码中,`height()` 函数用于计算给定节点的子树高度,然后`isBalanced()` 函数通过比较当前节点左右子树的高度并递归检查其子树来确定整个二叉树是否平衡。
阅读全文