题目描述:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
分析:
满足:左右二叉树的层数之差小于等于1
1)递归
知道了二叉树的深度怎么求,现在要判断是否是平衡二叉树,只要分别求出左右子树的深度,然后判断深度之差在小于2就行。
//1.递归,如果二叉树左树层数与右边层数之差大于1,就不是平衡二叉树
public boolean IsBalanced_Solution(TreeNode root) {
if(root == null)
return true;
int left = TreeDepth(root.left);
int right = TreeDepth(root.right);
int diff = left - right;
if(diff > 1 || diff < -1){
return false;
}
return IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);
}
public int TreeDepth(TreeNode root) {
if(root==null)
return 0;
int num1 = TreeDepth(root.left);
int num2 = TreeDepth(root.right);
return 1+ (num1 > num2 ? num1 : num2);
}
2)后续遍历