public class Solution {
public boolean IsBalanced_Solution(TreeNode root) { //遇见树 ---> 想递归 //思路是:将上一题中,求树的深度的方法利用到这里,先求出两棵子树的深度,然后相减取绝对值判断即可 if(root == null){ return true; } int left = TreeDepth(root.left); int right = TreeDepth(root.right); //return Math.abs(left-right) <= 1 ? true : false; //虽然写成上面的也能通过,但上面的那行代码少考虑了左右子树也必须是平衡二叉树的情况 //所以正确的应写成下面的 return Math.abs(left-right) <= 1 && IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right); } //求一颗二叉树的深度的方法 private int TreeDepth(TreeNode root){ if(root==null){ return 0; } int leftVal = TreeDepth(root.left); int rightVal = TreeDepth(root.right); return ((leftVal > rightVal) ? leftVal : rightVal) + 1; }
}