Untitled

 avatar
unknown
plain_text
a month ago
1.2 kB
2
Indexable
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