import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return bool布尔型
*/
public boolean IsBalanced_Solution (TreeNode pRoot) {
// write code here
return getHeight(pRoot) != -1;
}
private int getHeight(TreeNode node) {
if (node == null)return 0;
// 对当前节点,递归判断其左右子树是否为平衡二叉树
int leftCnt = getHeight(node.left);
if(leftCnt == -1)return -1;
int rightCnt = getHeight(node.right);
if(rightCnt == -1)return -1;
// 判断左右子树高度差是否小于等于1,是则返回当前节点的高度
return Math.abs(leftCnt - rightCnt) > 1 ? -1 : Math.max(leftCnt, rightCnt)+1;
}
}
递归判断,先判断左右子树是否为平衡二叉树

京公网安备 11010502036488号