输入描述:
输入一棵二叉树的根节点
返回值描述:
输出一个布尔类型的值
示例1
输入:{1,2,3,4,5,6,7}
返回值:true
示例2
输入:{}
返回值:true
利用上一篇文章,如何求二叉树的深度,我们在求二叉树的深度过程中,同时判断左节点树和右节点树的深度差距是否大于1即可。如果满足则继续递归,不满足则直接返回失败,代码如下
public boolean IsBalanced_Solution(TreeNode root) {
int balanced = isBalanced(root);
return !(balanced == -1);
}
public int isBalanced(TreeNode treeNode){
if(treeNode == null){
return 0;
}
//求左节点的深度
int left = isBalanced(treeNode.left);
if(left == -1){
return -1;
}
//求右节点的深度
int right = isBalanced(treeNode.right);
if(right == -1){
return -1;
}
if(left - right > 1 || right - left >1){
return -1;
}else {
return left > right? left+1:right+1;
}
}