Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Check if Binary Tree is Balanced in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean for a binary tree to be balanced?
A binary tree is balanced if for every node, the height difference between its left and right subtrees is at most 1.
Click to reveal answer
beginner
What is the main idea behind checking if a binary tree is balanced?
We check the height of left and right subtrees for every node and ensure their difference is not more than 1.
Click to reveal answer
intermediate
Why is it efficient to check balance and height in the same recursion?
Because it avoids repeated height calculations, reducing time complexity from O(n²) to O(n).
Click to reveal answer
intermediate
What does a return value of -1 usually indicate in a balanced tree check function?
It indicates that the subtree is not balanced, so the whole tree is unbalanced.
Click to reveal answer
beginner
In JavaScript, how can you represent a binary tree node?
A node can be an object with properties: value, left (child), and right (child). Example: { value: 5, left: null, right: null }
Click to reveal answer
What is the maximum allowed height difference between left and right subtrees for a node to be balanced?
A0
BNo limit
C2
D1
Which approach is best to check if a binary tree is balanced efficiently?
AUse a single recursive function that returns height or -1 if unbalanced
BCalculate height separately for each node multiple times
CTraverse the tree level by level only
DCount the total number of nodes
If a subtree is unbalanced, what should the recursive function return to stop further checks?
A0
Bnull
C-1
DInfinity
What is the time complexity of the efficient balanced tree check algorithm?
AO(n²)
BO(n)
CO(n log n)
DO(log n)
In JavaScript, which property is NOT typically part of a binary tree node?
Aparent
Bleft
Cright
Dvalue
Explain how to check if a binary tree is balanced using recursion.
Think about returning height or a special value to indicate imbalance.
You got /5 concepts.
    Describe why checking balance and height in one recursive function is better than separate calls.
    Consider how many times each node is visited.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does it mean for a binary tree to be balanced?
      easy
      A. The tree has the same number of nodes on left and right
      B. All nodes have two children
      C. The tree is a complete binary tree
      D. The height difference between left and right subtrees of every node is at most 1

      Solution

      1. Step 1: Understand balance condition

        A balanced binary tree means the height difference between left and right subtrees of every node is at most 1.
      2. Step 2: Compare other options

        Options A, B, and D describe other tree properties but not the balance condition.
      3. Final Answer:

        The height difference between left and right subtrees of every node is at most 1 -> Option D
      4. Quick Check:

        Balance means height difference ≤ 1 [OK]
      Hint: Balance means subtree heights differ by no more than 1 [OK]
      Common Mistakes:
      • Confusing balanced with complete tree
      • Thinking balance means equal nodes on both sides
      • Assuming all nodes must have two children
      2. Which of the following JavaScript function signatures is correct to check if a binary tree is balanced?
      easy
      A. function checkBalance(tree) { ... }
      B. function isBalanced(root) { ... }
      C. function balancedCheck(node) { ... }
      D. function isBalancedTree() { ... }

      Solution

      1. Step 1: Identify common parameter for tree root

        The function should accept the root node as a parameter to check balance.
      2. Step 2: Check function signatures

        Only function isBalanced(root) { ... } uses a clear parameter named 'root' which is standard for tree root nodes.
      3. Final Answer:

        function isBalanced(root) { ... } -> Option B
      4. Quick Check:

        Function needs root parameter [OK]
      Hint: Function must accept root node parameter [OK]
      Common Mistakes:
      • Omitting root parameter
      • Using unclear or no parameters
      • Using function names that don't indicate balance check
      3. What will be the output of the following code snippet?
      class Node {
        constructor(val) {
          this.val = val;
          this.left = null;
          this.right = null;
        }
      }
      
      function height(node) {
        if (!node) return 0;
        return 1 + Math.max(height(node.left), height(node.right));
      }
      
      function isBalanced(root) {
        if (!root) return true;
        let leftHeight = height(root.left);
        let rightHeight = height(root.right);
        if (Math.abs(leftHeight - rightHeight) > 1) return false;
        return isBalanced(root.left) && isBalanced(root.right);
      }
      
      const root = new Node(1);
      root.left = new Node(2);
      root.right = new Node(3);
      root.left.left = new Node(4);
      root.left.left.left = new Node(5);
      
      console.log(isBalanced(root));
      medium
      A. false
      B. true
      C. undefined
      D. Throws error

      Solution

      1. Step 1: Calculate heights of left and right subtrees

        Left subtree height is 3 (nodes 2 -> 4 -> 5), right subtree height is 1 (node 3).
      2. Step 2: Check balance condition at root

        Height difference is 3 - 1 = 2, which is greater than 1, so tree is not balanced.
      3. Final Answer:

        false -> Option A
      4. Quick Check:

        Height difference > 1 means not balanced [OK]
      Hint: Check height difference > 1 returns false [OK]
      Common Mistakes:
      • Ignoring deeper subtree height
      • Assuming tree is balanced if root has two children
      • Confusing height with number of nodes
      4. Find the bug in this code that checks if a binary tree is balanced:
      function isBalanced(root) {
        if (!root) return true;
        let leftHeight = height(root.left);
        let rightHeight = height(root.right);
        if (Math.abs(leftHeight - rightHeight) > 1) return false;
        isBalanced(root.left);
        isBalanced(root.right);
        return true;
      }
      medium
      A. Height function is not defined
      B. Incorrect base case for empty tree
      C. Missing return statements for recursive calls
      D. Using Math.abs incorrectly

      Solution

      1. Step 1: Analyze recursive calls

        The calls to isBalanced(root.left) and isBalanced(root.right) are made but their results are not returned or checked.
      2. Step 2: Identify missing return usage

        Without returning these recursive calls, the function always returns true after checking root, ignoring subtree balance.
      3. Final Answer:

        Missing return statements for recursive calls -> Option C
      4. Quick Check:

        Recursive calls must return their results [OK]
      Hint: Always return recursive call results [OK]
      Common Mistakes:
      • Not returning recursive call results
      • Assuming base case covers all
      • Ignoring subtree balance checks
      5. Given a binary tree, which approach is the most efficient to check if it is balanced without recalculating heights multiple times?
      hard
      A. Use a bottom-up recursion that returns height and balance status together
      B. Check balance only at the root node
      C. Traverse the tree level by level and count nodes
      D. Calculate height for each node separately and check balance

      Solution

      1. Step 1: Understand inefficiency of separate height calculations

        Calculating height separately for each node causes repeated work, increasing time complexity.
      2. Step 2: Use bottom-up recursion

        Returning height and balance status together in one recursion avoids repeated height calculations, improving efficiency.
      3. Final Answer:

        Use a bottom-up recursion that returns height and balance status together -> Option A
      4. Quick Check:

        Bottom-up recursion avoids repeated height calls [OK]
      Hint: Combine height and balance in one recursion [OK]
      Common Mistakes:
      • Recalculating heights multiple times
      • Checking balance only at root
      • Using level order traversal for balance
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard