2
* Definition for a binary tree node. public class TreeNode { int val; TreeNode left; TreeNode3
* right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left,4
* TreeNode right) { this.val = val; this.left = left; this.right = right; } }8
public int treeHeight(TreeNode root) {9
if (root == null) return 0;11
int left = treeHeight(root.left);12
int right = treeHeight(root.right);14
return (Math.max(left, right) + 1);17
public boolean isBalanced(TreeNode root) {19
if (root == null) return true;21
boolean leftBalanced = isBalanced(root.left);22
boolean rightBalanced = isBalanced(root.right);23
int leftHeight = treeHeight(root.left);24
int rightHeight = treeHeight(root.right);26
// Return true only when all conditions are true27
return (leftBalanced && rightBalanced && Math.abs(leftHeight - rightHeight) <= 1);