3. Given this TypeScript code for vertical order traversal, what is the output?
class TreeNode {
val: number;
left: TreeNode | null;
right: TreeNode | null;
constructor(val: number) {
this.val = val;
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 = new TreeNode(6);
root.right.right = new TreeNode(7);
function verticalOrder(root: TreeNode | null): number[][] {
if (!root) return [];
const map = new Map();
const queue: [TreeNode, number][] = [[root, 0]];
while (queue.length) {
const [node, col] = queue.shift()!;
if (!map.has(col)) map.set(col, []);
map.get(col)!.push(node.val);
if (node.left) queue.push([node.left, col - 1]);
if (node.right) queue.push([node.right, col + 1]);
}
return Array.from(map.entries())
.sort((a, b) => a[0] - b[0])
.map(entry => entry[1]);
}
console.log(verticalOrder(root));