1. 题目
2. 思路
(1) 递归
- 自底向上递归计算左右子树的高度差,设置全局变量记录二叉树是否平衡,若二叉树已经不平衡,则直接返回即可。
3. 代码
public class Test {
public static void main(String[] args) {
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class Solution {
private boolean res = true;
public boolean isBalanced(TreeNode root) {
getDepth(root);
return res;
}
private int getDepth(TreeNode root) {
if (!res) {
return 0;
}
if (root == null) {
return 0;
}
int left = getDepth(root.left);
int right = getDepth(root.right);
if (Math.abs(left - right) > 1) {
res = false;
}
return Math.max(left, right) + 1;
}
}