JSFiddle - React, Tailwind, and code Playground

by HikariNoSekai

JavaScript

class BinaryTree {
    constructor(comparator = cmp) {
        this.comparator = comparator;
    }

    insert(str) {

    }

    remove(str) {

    }

    height() {

    }

    toArray() {

    }
};

var cmp = function cmp(str1, str2) {
    return str1 < str2;
};



let tree = new BinaryTree();

tree.insert('b');
tree.insert('a');
tree.insert('c');

console.log(tree.height());// 2
console.log(tree.toArray());// ['a','b','c']

tree.remove('b');
tree.insert('b');

console.log(tree.height());// 3
console.log(tree.toArray());// ['a','b','c']

tree.insert('z');

console.log(tree.height());// 3
console.log(tree.toArray());// ['a','b','c','z']

tree.insert('y');
tree.insert('x');

console.log(tree.height());// 4
console.log(tree.toArray());// ['a','b','c','x','y','z']

try{
    tree.insert('x');
} catch({message}){
    console.log(message)// This tree already contains 'x'
}

try{
    tree.remove('x');
    tree.remove('x');
} catch({message}){
    console.log(message)// This tree does not contain 'x'
}

tree = new BinaryTree();

tree.insert('a');
tree.insert('b');
tree.insert('c');
tree.insert('d');
tree.insert('e');

console.log(tree.height());// 5
console.log(tree.toArray());// ['a','b','c','d','e']

tree.remove('b');
tree.remove('a');
tree.remove('c');
tree.remove('d');
tree.remove('e');

console.log(tree.height());// 0
console.log(tree.toArray());// []