目录
平衡二叉树
描述
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
示例 1
给定二叉树 [3,9,20,null,null,15,7]
3 / \ 9 20 / \ 15 7返回 true
示例 2
给定二叉树 [1,2,2,3,3,null,null,4,4]
1 / \ 2 2 / \ 3 3 / \ 4 4返回 false
限制
0 <= 树的结点个数 <= 10000
数据结构
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
方法:递归
这题就是求左右子树的深度差是否超过1,核心还是求树的深度,所以和上题类似都可以用递归求解。
class Solution {
boolean isBalanced=true;
public boolean isBalanced(TreeNode root) {
return depth(root)!=-1;
}
public int depth(TreeNode root){
if (root==null) return 0;
else{
int left=depth(root.left);//获取左边子树深度
if (left==-1) return -1;//如果左边子树不平衡,直接返回
int right=depth(root.right);//获取右边子树深度
if (right==-1) return -1;//如果右边子树不平衡,直接返回
if (left-right>1 || left-right<-1){
return -1;//如果两边子树的深度差超过1,则认为不平衡直接返回
}
return 1+Math.max(left,right);//返回当前节点的深度
}
}
}

本文解析了如何通过递归方法判断给定二叉树是否为平衡二叉树,通过实例和代码展示了如何计算节点深度并检查深度差,适用于0到10000节点的树结构。
281

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



