110. 平衡二叉树

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/balanced-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
平衡二叉树的定义是:任意的左右子树的高度差不能超过1。
先找到叶子节点,从叶子节点回溯。判断左右子树的高度差,超过1就返回-1,表示不符合的,回溯中判断,只要返回的是-1,说明不符合,不用再进行判断了。
public boolean isBalanced(TreeNode root) {
return getDep(root) != -1;
}
public int getDep(TreeNode node) {
if(node == null) {
return 0;
}
int left = getDep(node.left);
if(left == -1) {
return -1;
}
int right = getDep(node.right);
if(right == -1) {
return -1;
}
if(Math.abs(left-right) >1) {
return -1;
}
// 返回高度
return Math.max(left,right)+1;
}
浙公网安备 33010602011771号