function Node(value) {
this.value = value;
this.left = null;
this.right = null;
}
let a = new Node("a");
let b = a.left = new Node("b");
let c = a.right = new Node("c");
let d = b.left = new Node("d");
let e = b.right = new Node("e");
let f = c.left = new Node("f");
let g = c.right = new Node("g");
function fn1(node) {
if (!node) return
console.log(node.value)
fn1(node.left)
fn1(node.right)
}
function fn2(node) {
if (!node) return
fn2(node.left)
console.log(node.value)
fn2(node.right)
}
function fn3(node) {
if (!node) return
fn3(node.left)
fn3(node.right)
console.log(node.value)
}
function bfs(node) {
let queue = [node]
while (queue.length) {
let first = queue.shift()
if (!first) return
console.log(first.value)
queue.push(first.left)
queue.push(first.right)
}
}
bfs(a)