Untitled
public class BalancedBinaryTreeOptimized { public boolean isBalanced(TreeNode root) { return height(root) != -1; } // Helper method to calculate height and check balance private int height(TreeNode node) { if (node == null) return 0; int leftHeight = height(node.left); if (leftHeight == -1) return -1; // Left subtree is not balanced int rightHeight = height(node.right); if (rightHeight == -1) return -1; // Right subtree is not balanced if (Math.abs(leftHeight - rightHeight) > 1) return -1; // Current node is not balanced return 1 + Math.max(leftHeight, rightHeight); // Return height if balanced } public static void main(String[] args) { TreeNode root = new TreeNode(1); root.left = new TreeNode(2); root.right = new TreeNode(3); root.left.left = new TreeNode(4); root.left.right = new TreeNode(5); root.left.left.left = new TreeNode(6); BalancedBinaryTreeOptimized tree = new BalancedBinaryTreeOptimized(); System.out.println(tree.isBalanced(root)); // Output: false } }
Leave a Comment