Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Heap Concept Structure and Properties in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a heap in data structures?
A heap is a special tree-based data structure that satisfies the heap property: in a max heap, every parent node is greater than or equal to its children; in a min heap, every parent node is less than or equal to its children.
Click to reveal answer
beginner
What is the shape property of a heap?
The shape property means the heap is a complete binary tree, where all levels are fully filled except possibly the last level, which is filled from left to right.
Click to reveal answer
beginner
Explain the heap property with an example.
In a max heap, if a parent node has value 10, its children must have values less than or equal to 10. For example, a parent 10 with children 8 and 5 satisfies the heap property.
Click to reveal answer
intermediate
How is a heap usually represented in memory?
A heap is often represented as an array where the parent and child relationships are determined by indices: for a node at index i, left child is at 2i + 1, right child at 2i + 2, and parent at Math.floor((i - 1) / 2).
Click to reveal answer
intermediate
Why is the heap structure useful for priority queues?
Because the heap property allows quick access to the highest (max heap) or lowest (min heap) priority element at the root, making insertion and removal operations efficient (O(log n)).
Click to reveal answer
Which property ensures that a heap is a complete binary tree?
ABalance property
BHeap property
CShape property
DOrdering property
In a max heap, what is true about the parent node compared to its children?
AParent is smaller than children
BParent is equal or greater than children
CParent is always equal to children
DParent is unrelated to children
How do you find the left child index of a node at index i in a heap array?
A2 * i + 1
B2 * i
Ci / 2
Di - 1
What is the time complexity to insert an element into a heap?
AO(log n)
BO(n)
CO(1)
DO(n log n)
Which of these is NOT true about heaps?
AHeaps are complete binary trees
BHeaps can be efficiently stored in arrays
CHeaps allow quick access to max or min element
DHeaps maintain a strict ordering between siblings
Describe the two main properties of a heap and why they matter.
Think about the tree shape and the value order between nodes.
You got /4 concepts.
    Explain how a heap is represented using an array and how to find parent and child nodes.
    Focus on the formulas for indices.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is a key property of a max heap data structure?
      easy
      A. Every parent node is greater than or equal to its child nodes
      B. Every parent node is less than or equal to its child nodes
      C. All leaf nodes are greater than the root node
      D. The tree is always a complete binary tree but unordered

      Solution

      1. Step 1: Understand max heap property

        A max heap requires that each parent node is greater than or equal to its children.
      2. Step 2: Compare options with max heap definition

        Every parent node is greater than or equal to its child nodes matches the max heap property exactly, others describe min heap or incorrect properties.
      3. Final Answer:

        Every parent node is greater than or equal to its child nodes -> Option A
      4. Quick Check:

        Max heap = parent ≥ children [OK]
      Hint: Max heap means parent is always bigger or equal [OK]
      Common Mistakes:
      • Confusing max heap with min heap property
      • Thinking leaf nodes must be bigger than root
      • Ignoring the complete binary tree requirement
      2. Which of the following is the correct way to represent a heap in JavaScript using an array?
      easy
      A. Parent at index i, left child at i + 1, right child at i + 2
      B. Parent at index i, left child at 2*i + 1, right child at 2*i + 2
      C. Parent at index i, left child at 2*i, right child at 2*i + 1
      D. Parent at index i, left child at i - 1, right child at i - 2

      Solution

      1. Step 1: Recall array indexing for heap

        In zero-based arrays, left child index = 2*i + 1, right child index = 2*i + 2.
      2. Step 2: Match options with formula

        Parent at index i, left child at 2*i + 1, right child at 2*i + 2 matches the correct formula for zero-based indexing heaps.
      3. Final Answer:

        Parent at index i, left child at 2*i + 1, right child at 2*i + 2 -> Option B
      4. Quick Check:

        Heap array indexing = 2*i+1, 2*i+2 [OK]
      Hint: Remember zero-based indexing: left=2i+1, right=2i+2 [OK]
      Common Mistakes:
      • Using one-based indexing formulas incorrectly
      • Swapping left and right child indices
      • Using i+1 or i+2 which is wrong for heap
      3. Consider the following JavaScript code that builds a max heap from an array:
      const arr = [3, 9, 2, 1, 4, 5];
      function maxHeapify(arr, i, n) {
        let largest = i;
        let left = 2 * i + 1;
        let right = 2 * i + 2;
        if (left < n && arr[left] > arr[largest]) largest = left;
        if (right < n && arr[right] > arr[largest]) largest = right;
        if (largest !== i) {
          [arr[i], arr[largest]] = [arr[largest], arr[i]];
          maxHeapify(arr, largest, n);
        }
      }
      
      function buildMaxHeap(arr) {
        let n = arr.length;
        for (let i = Math.floor(n / 2) - 1; i >= 0; i--) {
          maxHeapify(arr, i, n);
        }
      }
      
      buildMaxHeap(arr);
      console.log(arr);
      What is the output printed?
      medium
      A. [3, 9, 2, 1, 4, 5]
      B. [9, 3, 5, 1, 4, 2]
      C. [5, 4, 3, 1, 9, 2]
      D. [9, 4, 5, 1, 3, 2]

      Solution

      1. Step 1: Understand buildMaxHeap process

        Start heapifying from last non-leaf node at index 2 (value 2), then index 1 (value 9), then index 0 (value 3).
      2. Step 2: Trace heapify calls

        Initial: [3,9,2,1,4,5]
        Heapify i=2: left=5 (5>2), largest=5, swap 2-5: [3,9,5,1,4,2]. Heapify 5: no children.
        Heapify i=1: left=3(1<9), right=4(4<9), no swap.
        Heapify i=0: left=1(9>3), largest=1; right=2(5<9), swap 0-1: [9,3,5,1,4,2]. Heapify 1 (val=3): left=3(1<3), right=4(4>3), largest=4, swap 1-4: [9,4,5,1,3,2]. Heapify 4: no children.
      3. Final Answer:

        [9, 4, 5, 1, 3, 2] -> Option D
      4. Quick Check:

        Max heap array after build = [9,4,5,1,3,2] [OK]
      Hint: Heapify from bottom non-leaf nodes up [OK]
      Common Mistakes:
      • Not heapifying recursively after swap
      • Confusing indices for children
      • Assuming original array order remains
      4. The following JavaScript function is intended to insert a new value into a max heap represented as an array. Identify the bug:
      function insertHeap(arr, value) {
        arr.push(value);
        let i = arr.length - 1;
        while (i > 0) {
          let parent = Math.floor(i / 2);
          if (arr[parent] < arr[i]) {
            [arr[parent], arr[i]] = [arr[i], arr[parent]];
            i = parent;
          } else {
            break;
          }
        }
      }
      medium
      A. Parent index calculation should be Math.floor((i - 1) / 2)
      B. The loop should run while i >= 0
      C. The swap should happen only if arr[parent] > arr[i]
      D. The function should remove the last element before inserting

      Solution

      1. Step 1: Check parent index formula in zero-based heap

        In zero-based arrays, parent index = Math.floor((i - 1) / 2), not Math.floor(i / 2).
      2. Step 2: Understand impact of wrong parent index

        Using Math.floor(i / 2) causes incorrect parent calculation, breaking heap property restoration.
      3. Final Answer:

        Parent index calculation should be Math.floor((i - 1) / 2) -> Option A
      4. Quick Check:

        Parent index = (i-1)//2 in zero-based heap [OK]
      Hint: Parent index in zero-based heap = (i-1)//2 [OK]
      Common Mistakes:
      • Using i/2 instead of (i-1)/2 for parent
      • Loop condition allowing i=0 to cause errors
      • Swapping when parent is larger, not smaller
      5. You have a min heap represented as an array: [2, 5, 8, 10, 15, 20]. You want to insert the value 1 and maintain the min heap property. Which sequence of array states correctly shows the heap after each step of insertion and heapify up?
      hard
      A. [2, 5, 8, 10, 15, 20, 1] -> [2, 5, 8, 10, 15, 20, 1] -> [1, 5, 8, 10, 15, 20, 2]
      B. [2, 5, 8, 10, 15, 20, 1] -> [1, 5, 8, 10, 15, 20, 2]
      C. [2, 5, 8, 10, 15, 20, 1] -> [2, 5, 1, 10, 15, 20, 8] -> [1, 5, 2, 10, 15, 20, 8]
      D. [2, 5, 8, 10, 15, 20, 1] -> [1, 2, 5, 10, 15, 20, 8]

      Solution

      1. Step 1: Insert value at end

        Insert 1 at the end: [2, 5, 8, 10, 15, 20, 1]
      2. Step 2: Heapify up swaps

        Compare 1 with parent at index 2 (value 8), swap: [2, 5, 1, 10, 15, 20, 8]
        Compare 1 with new parent at index 0 (value 2), swap: [1, 5, 2, 10, 15, 20, 8]
      3. Step 3: Final heap state

        Heap property restored with 1 at root.
      4. Final Answer:

        [2, 5, 8, 10, 15, 20, 1] -> [2, 5, 1, 10, 15, 20, 8] -> [1, 5, 2, 10, 15, 20, 8] -> Option C
      5. Quick Check:

        Heapify up swaps child with parent until order restored [OK]
      Hint: Heapify up swaps child with parent until order restored [OK]
      Common Mistakes:
      • Not swapping with correct parent index
      • Stopping heapify too early
      • Incorrect final heap array after swaps
      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