递归做法:
这道题最好结合树的深度那道题做。
二叉树深度
在树的深度中,我们已经得到了一个求解树的深度的递归函数。
在本题中,我们可以设一个boolean值,在递归求解深度的函数中,顺便加上一个判断:即若左子树和右子树的高度相差大于1,则不平衡,布尔值变为false
boolean flag = true; public boolean IsBalanced_Solution(TreeNode root) { if (root == null) { return true; } dfs(root); return flag; } private int dfs(TreeNode root) { if (root == null) { return 0; } int left = dfs(root.left); int right = dfs(root.right); if (Math.abs(left - right) > 1) { flag = false; } return 1 + Math.max(left, right); }