Skip to content

Instantly share code, notes, and snippets.

@cagataycali
Created November 13, 2021 23:18
Show Gist options
  • Select an option

  • Save cagataycali/33667d5513ad81b5ae464778df6a79c8 to your computer and use it in GitHub Desktop.

Select an option

Save cagataycali/33667d5513ad81b5ae464778df6a79c8 to your computer and use it in GitHub Desktop.
[JavaScript] Binary search tree traversals
const assert = require("assert");
function BST(value) {
this.value = value;
this.left = null;
this.right = null;
}
// Left, root, right - root is mid
function inOrderTraverse(tree, array) {
tree.left && inOrderTraverse(tree.left, array);
array.push(tree.value);
tree.right && inOrderTraverse(tree.right, array);
return array;
}
// Root, left, right - root is pre
function preOrderTraverse(tree, array) {
array.push(tree.value);
tree.left && preOrderTraverse(tree.left, array);
tree.right && preOrderTraverse(tree.right, array);
return array;
}
// left, right, root - root is post
function postOrderTraverse(tree, array) {
tree.left && postOrderTraverse(tree.left, array);
tree.right && postOrderTraverse(tree.right, array);
array.push(tree.value);
return array;
}
/*
root = 10
/ \
5 15
/ \ \
2 5 22
/
1
*/
const root = new BST(10);
root.left = new BST(5);
root.left.left = new BST(2);
root.left.left.left = new BST(1);
root.left.right = new BST(5);
root.right = new BST(15);
root.right.right = new BST(22);
assert.deepStrictEqual(inOrderTraverse(root, []), [1, 2, 5, 5, 10, 15, 22]);
assert.deepStrictEqual(preOrderTraverse(root, []), [10, 5, 2, 1, 5, 15, 22]);
assert.deepStrictEqual(postOrderTraverse(root, []), [1, 2, 5, 5, 22, 15, 10]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment