Skip to content

Instantly share code, notes, and snippets.

@siutin
Created August 26, 2018 08:34
Show Gist options
  • Save siutin/e850be86fffbb2d457927b0777a73348 to your computer and use it in GitHub Desktop.
Save siutin/e850be86fffbb2d457927b0777a73348 to your computer and use it in GitHub Desktop.
const TreeNode = function (value) {
this.left = null
this.right = null
this.value = value
}
// accept muliple sorted unqiue numbers arrays
const buildTreeNodes = function (...arrs) {
let node = new TreeNode()
for (let i = 0; i < arrs.length; i++) {
for (let j = 0; j < arrs[i].length; j++) {
addTreeNode(node, arrs[i][j])
}
}
return node
}
const addTreeNode = function (node, value) {
if (node.value == null) {
node.value = value
} else if (node.value > value) {
if (!node.left) {
node.left = new TreeNode(value)
} else {
addTreeNode(node.left, value)
}
} else if (node.value < value) {
if (!node.right) {
node.right = new TreeNode(value)
} else {
addTreeNode(node.right, value)
}
}
}
const readTreeNode = function (node) {
let arr = []
if (node) {
if (node.left) {
arr = arr.concat(readTreeNode(node.left))
}
arr.push(node.value)
if (node.right) {
arr = arr.concat(readTreeNode(node.right))
}
}
return arr
}
const tree = buildTreeNodes([1, 12, 15, 26, 38], [2, 13, 17, 30, 45])
readTreeNode(node) //  [1, 2, 12, 13, 15, 17, 26, 30, 38, 45]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment