public class Solution {
    
    public int F(TreeNode root){
        if(root==null) return 0;
        int left=0,right=0,re = 1;
        if(root.left!=null) left = F(root.left);
        if(root.right!=null) right = F(root.right);
        return re + (Math.max(left,right));
        
    }
    public boolean IsBalanced_Solution(TreeNode root) {
        if(root==null) return true;
        int left=0,right=0;
        if(root.left!=null) left = F(root.left);
        if(root.right!=null) right = F(root.right);
        if(Math.abs(left-right)<2) 
            return (IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right));
        return false;
    }
}