输入一个二叉树判断它是否是平衡二叉树
时间: 2023-05-21 07:02:31 浏览: 148
可以使用递归的方法来判断一个二叉树是否是平衡二叉树。首先判断左子树是否是平衡二叉树,再判断右子树是否是平衡二叉树,最后判断左右子树的高度差是否小于等于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 getHeight(TreeNode* root) {
if (root == nullptr) {
return 0;
}
return max(getHeight(root->left), getHeight(root->right)) + 1;
}
```
相关问题
平衡二叉树的判断,输入一个二叉树判断它是否是平衡二叉树
平衡二叉树是一种特殊的二叉搜索树,它的左右子树的高度差不超过1。因此,判断一个二叉树是否是平衡二叉树,只需要判断它的左右子树的高度差是否不超过1,并且左右子树也必须是平衡二叉树。
以下是Java实现:
```
public boolean isBalanced(TreeNode root) {
if (root == null) {
return true;
}
int leftHeight = getHeight(root.left);
int rightHeight = getHeight(root.right);
if (Math.abs(leftHeight - rightHeight) > 1) {
return false;
}
return isBalanced(root.left) && isBalanced(root.right);
}
private int getHeight(TreeNode node) {
if (node == null) {
return 0;
}
return Math.max(getHeight(node.left), getHeight(node.right)) + 1;
}
```
其中,getHeight()方法用来计算一个节点的高度,isBalanced()方法用来判断一个二叉树是否是平衡二叉树。
平衡二叉树的判断,输入一个二叉树判断它是否是平衡二叉树python
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isBalanced(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def check_balanced(node):
if not node:
return 0
left_height = check_balanced(node.left)
right_height = check_balanced(node.right)
if left_height == -1 or right_height == -1 or abs(left_height - right_height) > 1:
return -1
return max(left_height, right_height) + 1
return check_balanced(root) != -1
阅读全文