题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
算法思想
(1)要么为空,要么左子树深度和右子树深度绝对值不超过1
(2)左子树和右子树都为平衡二叉树
代码实现
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if(root == null)
return true;
if(Math.abs(TreeDepth(root.left) - TreeDepth(root.right)) > 1)
return false;
return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
}
public int TreeDepth(TreeNode root) {
if(root == null)
return 0;
return Math.max(TreeDepth(root.right) + 1, TreeDepth(root.left) + 1);
}
}