Skip to content

Instantly share code, notes, and snippets.

@jclem
Last active January 1, 2025 23:23
Show Gist options
  • Save jclem/148894223d61040602cd541f05c8c0a5 to your computer and use it in GitHub Desktop.
Save jclem/148894223d61040602cd541f05c8c0a5 to your computer and use it in GitHub Desktop.
type TreeNode = [value: number, left: TreeNode | null, right: TreeNode | null]
const node: TreeNode =
[1,
[2,
[4, null, null],
null],
[3,
[5, null, null],
[6, null, null]]]
function logTree(nodes: TreeNode[]) {
if (nodes.length == 0) {
return
}
const nextNodes: TreeNode[] = []
for (const node of nodes) {
process.stdout.write(`${node[0]} `);
if (node[1]) nextNodes.push(node[1])
if (node[2]) nextNodes.push(node[2])
}
process.stdout.write('\n')
logTree(nextNodes)
}
logTree([node]);
function logTreeNoRecursion(nodes: TreeNode[]) {
let queue = [...nodes]
while (queue.length > 0) {
let nextQueue: TreeNode[] = []
for (const node of queue) {
process.stdout.write(`${node[0]} `)
if (node[1]) nextQueue.push(node[1])
if (node[2]) nextQueue.push(node[2])
}
process.stdout.write('\n')
queue = nextQueue
}
}
logTreeNoRecursion([node])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment