1、判断二叉搜索树是否是平衡二叉树
输入一棵二叉树,判断二叉搜索树是否是平衡二叉树。
2、思路:采用递归,算出某次递归左右子树的高度,根据高度差来判断是否满足要求,在递归中有一次高度差大于1时,即不满足。
3、代码:
public boolean IsBalanced_Solution(TreeNode root) {
if(root == null)
return true;
int state = isBalanced_Solution(root);
if(state == -1)
return false;
return true;
}
private int isBalanced_Solution(TreeNode root) {
int left_high = 0, right_high = 0;
if(root.left == null && root.right == null){
return 1;
}
if(root.left != null){
left_high = isBalanced_Solution(root.left);
if( left_high == -1){
return -1;
}
}
if(root.right != null){
right_high = isBalanced_Solution(root.right);
if( right_high == -1){
return -1;
}
}
if (Math.abs(left_high - right_high) > 1){
return -1;
}
return 1 + Math.max(left_high, right_high);
}