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;
    }
 ...