class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
TreeNode(int x, TreeNode left, TreeNode right) {
this.val = x;
this.left = left;
this.right = right;
}
}
public class Solution {
public int getHeight(TreeNode root) {
if (root == null)
return 0;
return Math.max(getHeight(root.left), getHeight(root.right)) + 1;
}
public boolean isBalanced(TreeNode root) {
if (root == null)
return true;
int leftHeight = getHeight(root.left);
int rightHeight = getHeight(root.right);
return Math.abs(leftHeight - rightHeight) <= 1 && isBalanced(root.left) && isBalanced(root.right);
}
public static void main(String[] args) {
TreeNode _15 = new TreeNode(15);
TreeNode _7 = new TreeNode(7);
TreeNode _9 = new TreeNode(9);
TreeNode _20 = new TreeNode(20, _15, _7);
TreeNode _3 = new TreeNode(3, _9, _20);
System.out.println(new Solution().isBalanced(_3));
}
}
判断二叉树是否是平衡二叉树
最新推荐文章于 2024-07-27 15:47:05 发布
本文介绍了一种用于判断二叉树是否为平衡二叉树的算法实现,并提供了完整的Java代码示例。通过递归计算左右子树的高度来确定整个二叉树是否满足平衡条件。
3622

被折叠的 条评论
为什么被折叠?



