一、题目要求
给定一个二叉树,判断它是否是 平衡二叉树
二、递归解法
2.1 初步思想
递归返回条件:当前结点为空节点,返回0。
递归返回值:当前结点的左右子树最大高度+1,若左右子树高度差超过1,返回-1作为标志表示不平衡,若左右子树其中之一不平衡,直接返回-1。
2.2 代码实现
class Solution {
public boolean isBalanced(TreeNode root) {
if(root == null)return true;
int result = merge(root);
if(result != -1)return true;
return false;
}
public int merge(TreeNode root) {
if(root == null){return 0;}
int left = merge(root.left);
if(left == -1){return -1;}
int right = merge(root.right);
if(right == -1){return -1;}
if(Math.abs(left-right) > 1) {
return -1;
}
return Math.max(left,right)+1;
}
}