JSFiddle - React, Tailwind, and code Playground
JavaScript
// Binary Tree
function getNode(value, left, right) {
return {
value: value,
left: left,
right: right
};
}
var node40 = getNode(40);
var node45 = getNode(45);
var node20 = getNode(20, node40, node45);
var node25 = getNode(25);
var node30 = getNode(30);
var node35 = getNode(35);
var node10 = getNode(10, node20, node25);
var node15 = getNode(15, node30, node35);
var root = getNode(5, node10, node15);
console.log('================DFS===============');
// DFS
function dfs(root, val) {
if (root.value === val) {
return true;
} else {
if (root.left && dfs(root.left, val)) {
return true;
}
if (root.right && dfs(root.right, val)) {
return true;
}
}
return false;
}
console.log(dfs(root, 35));
console.log('================BFS===============');
// BFS
function bfs(root, val) {
var current = [root];
var next = [];
var node;
while(current.length) {
node = current.pop();
if (node.value === val) {
return true;
}
node.left && next.push(node.left);
node.right && next.push(node.right);
if (!current.length && next.length) {
current = next;
next = [];
}
}
return false;
}
console.log(bfs(root, 35));
console.log('===============ZigZag Print================');
// ========================
// DB
// Binary Tree zig-zag level printing
function zigzagPrint(root) {
var dir = false; // false is rtl, true is ltr
var current = [root];
while (true) {
var strToPrint = '';
var next = [];
while (current.length) {
var node = current.pop();
strToPrint += node.value + ' ';
if (dir) {
node.left && (next.push(node.left));
node.right && (next.push(node.right));
} else {
node.right && (next.push(node.right));
node.left && (next.push(node.left));
}
}
console.log(strToPrint);
if (next.length) {
dir = !dir;
current = next;
} else {
break;
}
...