1.平衡二叉树
树中的任意一个节点,他的左子树和右子树的高度差不超过1
2. 代码实现
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root){
if(root == null){
return 0;
}
int leftDepth = maxDepth(root.left);
int rightDepth = maxDepth(root.right);
return 1 + (leftDepth > rightDepth? leftDepth : rightDepth);
}
public boolean isBalanced(TreeNode root) {
if(root == null){
return true;
}
int leftDepth = maxDepth(root.left);
int rightDepth = maxDepth(root.right);
if(leftDepth - rightDepth > 1 || rightDepth - leftDepth > 1){
return false;
}
return isBalanced(root.left) && isBalanced(root.right);
}
}
这个思路很好理解
如果是空树,算平衡
如果没有子树,也算平衡
求一下左右子树的高度,判断一下差值是否小于1,不满足return false
递归判定左子树右子树是不是也是平衡
这篇博客介绍了平衡二叉树的概念,其特征是任意节点的左右子树高度差不超过1。提供了Java代码实现来计算二叉树的最大深度,并通过递归方式判断一棵树是否为平衡二叉树。如果树为空或者没有子节点,则认为是平衡的。通过比较左右子树的高度差,若超过1则返回false,否则继续递归检查子树。

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



