在二叉树中检查平衡的函数是平衡的C++
平衡二叉树是一种特殊的二叉树,它的左子树和右子树的高度差不超过1。在二叉树中检查平衡的函数可以通过递归的方式实现。
以下是一个C++实现的示例代码:
#include <iostream>
#include <algorithm>
using namespace std;
// 二叉树节点的定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 计算二叉树的高度
int getHeight(TreeNode* root) {
if (root == nullptr) {
return 0;
}
return max(getHeight(root->left), getHeight(root->right)) + 1;
}
// 检查二叉树是否平衡
bool isBalanced(TreeNode* root) {
if (root == nullptr) {
return true;
}
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
if (abs(leftHeight - rightHeight) > 1) {
return false;
}
return isBalanced(root->left) && isBalanced(root->right);
}
int main() {
// 构造一个平衡二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
// 检查二叉树是否平衡
bool balanced = isBalanced(root);
if (balanced) {
cout << "The binary tree is balanced." << endl;
} else {
cout << "The binary tree is not balanced." << endl;
}
return 0;
}
在这个示例代码中,我们首先定义了一个二叉树节点的结构体,包含一个值和左右子节点的指针。然后,我们实现了一个计算二叉树高度的函数getHeight
,利用递归的方式计算二叉树的高度。最后,我们实现了一个检查二叉树是否平衡的函数isBalanced
,通过比较左右子树的高度差来判断二叉树是否平衡。在main
函数中,我们构造了一个平衡二叉树,并调用isBalanced
函数进行检查。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。
领取专属 10元无门槛券
手把手带您无忧上云