Consider the following TypeScript code that creates a simple binary tree manually and performs an inorder traversal (left, root, right). What will be the printed output?
class TreeNode { value: number; left: TreeNode | null; right: TreeNode | null; constructor(value: number) { this.value = value; this.left = null; this.right = null; } } const root = new TreeNode(10); root.left = new TreeNode(5); root.right = new TreeNode(15); root.left.left = new TreeNode(3); root.left.right = new TreeNode(7); function inorder(node: TreeNode | null): void { if (!node) return; inorder(node.left); console.log(node.value); inorder(node.right); } inorder(root);
Remember inorder traversal visits left child, then root, then right child.
Inorder traversal visits nodes in the order: left subtree, root, right subtree. So the output is 3, 5, 7, 10, 15.
Given the following manual binary tree creation code, how many nodes does the tree contain?
class TreeNode { value: number; left: TreeNode | null; right: TreeNode | null; constructor(value: number) { this.value = value; this.left = null; this.right = null; } } const 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.right.right = new TreeNode(6);
Count each new TreeNode created and assigned.
Nodes created: 1 (root), 2, 3, 4, 5, 6. Total 6 nodes.
Examine the following TypeScript code that attempts to create a binary tree. What error will it produce when run?
class TreeNode { value: number; left: TreeNode | null; right: TreeNode | null; constructor(value: number) { this.value = value; this.left = null; this.right = null; } } const 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.right.left.left = new TreeNode(6);
Check if all intermediate nodes exist before assigning children.
root.right.left is null by default, so trying to access .left on it causes a TypeError.
Choose the correct TypeScript code snippet that creates a binary tree node with value 10 and assigns left child 5 and right child 15.
Remember to use new keyword and assign TreeNode objects to left and right.
Option A correctly uses new and assigns TreeNode instances to left and right.
Given the following manual binary tree creation, what is the output of a preorder traversal (root, left, right)?
class TreeNode { value: number; left: TreeNode | null; right: TreeNode | null; constructor(value: number) { this.value = value; this.left = null; this.right = null; } } const root = new TreeNode(8); root.left = new TreeNode(3); root.right = new TreeNode(10); root.left.left = new TreeNode(1); root.left.right = new TreeNode(6); root.left.right.left = new TreeNode(4); root.left.right.right = new TreeNode(7); root.right.right = new TreeNode(14); root.right.right.left = new TreeNode(13); function preorder(node: TreeNode | null): void { if (!node) return; console.log(node.value); preorder(node.left); preorder(node.right); } preorder(root);
Preorder visits root first, then left subtree, then right subtree.
Preorder traversal visits nodes in order: root, left, right. So output is 8, 3, 1, 6, 4, 7, 10, 14, 13.