public class Solution { public boolean IsBalanced_Solution(TreeNode root) { if(root == null) return true; int res = helpVerify(root); if(res == -1) return false; return true; } int helpVerify(TreeNode root){ if(root == null) return 0; int left = helpVerify(root.left); if(left == -1) return -1; int right = helpVerify(root.right); if(right == -1 || Math.abs(left-right) > 1) return -1; return Math.max(left,right)+1; } }
自底向上的进行判断:
如果中间发现了子树不是平衡的,那么就返回-1,减少后续的递归;