JSFiddle - React, Tailwind, and code Playground

by danbeam

JavaScript

//                  5
//            3           7
//          2   4      6     8
//        1                    9

function assert(cond) {
    if (!cond)
        throw 'fail';
}

function inOrder(node) {
    if (!node)
        return;    
    inOrder(node.left);
    console.log(node.data);
    inOrder(node.right);
}

function insertData(node, data) {
    assert(node);
    if (data < node.data) {
        if (node.left)
            insertData(node.left, data);
        else
            node.left = {data: data};
    } else { // data >= node.data
        if (node.right)
            insertData(node.right, data);
        else
            node.right = {data: data};
    }
}

var root = {data: 5};
var data = [3, 2, 1, 4, 7, 6, 8, 9];

for (var i = 0; i < data.length; ++i) {
    insertData(root, data[i]);
}

console.log(root);
inOrder(root);