JSFiddle - React, Tailwind, and code Playground
by Prathameshsb
JavaScript
class TreeNode {
constructor(val, left = null, right = null) {
this.val = val;
this.left = left;
this.right = right;
}
}
function printVerticalOrder(root) {
if (!root) return [];
const columns = new Map(); // Map to store columns
const queue = [{ node: root, col: 0 }]; // Initialize queue with root
while (queue.length) {
const { node, col } = queue.shift();
if (!columns.has(col)) {
columns.set(col, []);
}
columns.get(col).push(node.val); // Push node value to respective column
if (node.left) {
queue.push({ node: node.left, col: col - 1 }); // Decrement column index for left child
}
if (node.right) {
queue.push({ node: node.right, col: col + 1 }); // Increment column index for right child
}
}
// Sort the columns by their index
const sortedColumns = [...columns.entries()].sort((a, b) => a[0] - b[0]);
// Extract values from sorted columns
const result = sortedColumns.map(([, values]) => values);
return result;
}
const tree = new TreeNode(
6,
new TreeNode(
3,
new TreeNode(5, null, new TreeNode(2, new TreeNode(9), new TreeNode(7))),
),
new TreeNode(
4,
new TreeNode(1),
new TreeNode(
0,
new TreeNode(8),
),
),
);
const result = printVerticalOrder(tree);
console.log(result);