剑指 Offer 55 - II. 平衡二叉树
题目描述
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
解答
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isBalanced(TreeNode root) {
System.out.println("调用");
if(root == null){
return true;
}
boolean left = isBalanced(root.left);
boolean right = isBalanced(root.right);
if(left == false || right == false){
return false;
}
int diff = maxDepth(root.left) - maxDepth(root.right);
System.out.println("diff:"+diff);
if(diff < -1||diff > 1){
return false;
}
return true;
}
// 返回以root为根节点的树的最大深度
public int maxDepth(TreeNode root){
if(root == null){
return 0;
}
int left = maxDepth(root.left);
int right = maxDepth(root.right);
return left > right ? (left + 1):(right + 1);
}
}