题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路
先回忆下平衡二叉树的定义。它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
上面一题我们刚写过求二叉树深度的代码,稍作改动即可。
个人解法
public class Solution {
public boolean b=true;
public boolean IsBalanced_Solution(TreeNode c) {
height(c);
return b;
}
//说一下自己对递归的感悟,题目想求高度差,题目给的方法返回值是boolean,肯定得自己创新的方法。
//这里的b是上面方法的b,可以通过这个方法去返回boolean的值可以学习
public int height(TreeNode root){
if(root==null){
return 0;
}
int left=height(root.left);
int right=height(root.right);
//当出现有子树的左右高度差超过1,肯定不是平衡二叉树
if(Math.abs(left-right)>1){
b=false;
}
return left>right?(left+1):(right+1);
}
}