0
0
DSA Javascriptprogramming~20 mins

Serialize and Deserialize Binary Tree in DSA Javascript - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Binary Tree Serialization Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Serialization Using Preorder Traversal
What is the output of the following serialization function when applied to the given binary tree?
DSA Javascript
class TreeNode {
  constructor(val, left = null, right = null) {
    this.val = val;
    this.left = left;
    this.right = right;
  }
}

function serialize(root) {
  if (!root) return '#';
  return root.val + ',' + serialize(root.left) + ',' + serialize(root.right);
}

// Tree structure:
//     1
//    / \
//   2   3
//      / \
//     4   5

const root = new TreeNode(1, new TreeNode(2), new TreeNode(3, new TreeNode(4), new TreeNode(5)));
console.log(serialize(root));
A1,3,2,#,#,4,#,#,5,#,#
B1,2,#,#,3,5,#,#,4,#,#
C1,2,#,#,3,4,#,#,5,#,#
D1,3,4,#,#,5,#,#,2,#,#
Attempts:
2 left
💡 Hint
Think about preorder traversal: root, left subtree, then right subtree. Null nodes are marked with '#'.
Predict Output
intermediate
2:00remaining
Result of Deserializing a Serialized String
Given the deserialize function below, what will be the value of root.left.right after deserializing the string "1,2,#,3,#,#,4,#,#"?
DSA Javascript
class TreeNode {
  constructor(val, left = null, right = null) {
    this.val = val;
    this.left = left;
    this.right = right;
  }
}

function deserialize(data) {
  const values = data.split(',');
  function helper() {
    if (values.length === 0) return null;
    const val = values.shift();
    if (val === '#') return null;
    const node = new TreeNode(parseInt(val));
    node.left = helper();
    node.right = helper();
    return node;
  }
  return helper();
}

const root = deserialize("1,2,#,3,#,#,4,#,#");
console.log(root.left.right ? root.left.right.val : null);
A3
B4
C2
Dnull
Attempts:
2 left
💡 Hint
Follow the recursive calls carefully and track the nodes created for each value.
🔧 Debug
advanced
2:00remaining
Identify the Error in the Serialization Code
What error will the following serialization code produce when run on a binary tree?
DSA Javascript
function serialize(root) {
  if (!root) return null;
  return root.val + ',' + serialize(root.left) + ',' + serialize(root.right);
}

// Note: returns null for empty nodes instead of '#'.
AOutput string contains 'null' instead of '#' for empty nodes
BNo error, outputs correct serialization string
CSyntaxError due to missing return statement
DTypeError: Cannot read property 'val' of null
Attempts:
2 left
💡 Hint
Check what happens when root is null and how it is represented in the output string.
🚀 Application
advanced
2:00remaining
Number of Nodes After Deserialization
After deserializing the string "10,5,#,#,15,12,#,#,20,#,#" using the standard preorder deserialize function, how many nodes does the resulting binary tree have?
DSA Javascript
class TreeNode {
  constructor(val, left = null, right = null) {
    this.val = val;
    this.left = left;
    this.right = right;
  }
}

function deserialize(data) {
  const values = data.split(',');
  function helper() {
    if (values.length === 0) return null;
    const val = values.shift();
    if (val === '#') return null;
    const node = new TreeNode(parseInt(val));
    node.left = helper();
    node.right = helper();
    return node;
  }
  return helper();
}

const root = deserialize("10,5,#,#,15,12,#,#,20,#,#");

function countNodes(root) {
  if (!root) return 0;
  return 1 + countNodes(root.left) + countNodes(root.right);
}

console.log(countNodes(root));
A4
B7
C6
D5
Attempts:
2 left
💡 Hint
Count each non-null node created during deserialization.
🧠 Conceptual
expert
2:00remaining
Why Use '#' in Serialization of Binary Trees?
Why is the character '#' commonly used to represent null nodes in binary tree serialization?
ATo reduce the size of the serialized string by replacing nulls with a single character
BTo explicitly mark null children so the tree structure can be uniquely reconstructed
CBecause '#' is the only character not allowed in node values
DTo indicate the end of the serialized string
Attempts:
2 left
💡 Hint
Think about how the deserialization function knows where left and right children end.