输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题思路求解二叉树的高度,比较就知道了
package JianzhiOffer;
public class Sloution37 {
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null) {
return true;
}
/**
* 高度差正确就继续求解,这里写的不好~求解高度没有利用保存起来
*/
if (Math.abs(getLength(root.left) - getLength(root.right)) == 0
| Math.abs(getLength(root.left) - getLength(root.right)) == 1) {
return IsBalanced_Solution(root.left)
&& IsBalanced_Solution(root.right);
} else {
return false;
}
}
int getLength(TreeNode root) {
if (root == null) {
return 0;
}
int leftCount = getLength(root.left);
int rightCOunt = getLength(root.right);
return rightCOunt > leftCount ? rightCOunt + 1 : leftCount + 1;
}
}