二叉树是否为平衡二叉树,c语言伪代码
时间: 2024-10-08 10:27:04 浏览: 43
061 二叉树遍利 C语言
判断一个给定的二叉树是否为平衡二叉树,需要递归地检查每个节点的左子树和右子树的高度差是否小于等于1。若所有子树高度差均符合条件,则认为该二叉树是平衡的。以下是C语言的一个伪代码示例:
```c
// 定义节点结构体
typedef struct Node {
int value;
struct Node* left;
struct Node* right;
} Node;
// 计算节点的高度
int height(Node* node) {
if (node == NULL) return 0;
else return 1 + max(height(node->left), height(node->right));
}
// 判断是否为平衡二叉树
bool isBalanced(Node* root) {
if (root == NULL) return true; // 空树视为平衡
int leftHeight = height(root->left);
int rightHeight = height(root->right);
if (abs(leftHeight - rightHeight) > 1) {
return false; // 高度差大于1,不平衡
} else {
return isBalanced(root->left) && isBalanced(root->right); // 递归检查左右子树
}
}
```
这个伪代码首先定义了一个节点结构体,然后定义了计算节点高度的函数,最后是`isBalanced`函数,它会递归地检查当前节点的两个子树是否也是平衡的。
阅读全文