3. Given the following TypeScript code snippet for top view, what will be the printed output?
class Node {
constructor(public data: number, public left: Node | null = null, public right: Node | null = null) {}
}
const root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.left.right = new Node(4);
root.left.right.right = new Node(5);
root.left.right.right.right = new Node(6);
function topView(root: Node) {
const map = new Map();
const queue: Array<[Node, number]> = [[root, 0]];
while (queue.length) {
const [node, hd] = queue.shift()!;
if (!map.has(hd)) {
map.set(hd, node.data);
}
if (node.left) queue.push([node.left, hd - 1]);
if (node.right) queue.push([node.right, hd + 1]);
}
const sortedKeys = Array.from(map.keys()).sort((a, b) => a - b);
const result = sortedKeys.map(key => map.get(key));
console.log(result);
}
topView(root);