Skip to content

Instantly share code, notes, and snippets.

@pinkmomo027
Created June 11, 2018 17:45
Show Gist options
  • Save pinkmomo027/5ab6e315992125d2d332c4888f1cb517 to your computer and use it in GitHub Desktop.
Save pinkmomo027/5ab6e315992125d2d332c4888f1cb517 to your computer and use it in GitHub Desktop.
generate random nodes
class TNode {
constructor (value) {
this.value = value;
this.left = null;
this.right = null;
}
print (level=0) {
let c = level;
while(c > 0) {
process.stdout.write('- ');
c--;
}
process.stdout.write(`${this.value} \n`);
if (this.left) {
this.left.print(level + 1);
}
if (this.right) {
this.right.print(level + 1);
}
}
}
function randomize(array) {
const l = array.length;
for(let i = 0; i < array.length; i++ ) {
let randomIndex = Math.floor(Math.random() * l);
let temp = array[randomIndex];
array[randomIndex] = array[i];
array[i] = temp;
}
return array;
}
function randomTree(numbers) {
let index = 0;
randomize(numbers);
function randomTreeImpl (node) {
if (index >= numbers.length) {
// console.log("Finished Generating Random Tree");
return;
}
if (node.value == null) {
node.value = numbers[index++];
}
//generate random left
if (Math.random() > 0.5) {
node.left = new TNode(numbers[index++]);
}
//generate random right
if (Math.random() > 0.5) {
node.right = new TNode(numbers[index++]);
}
if (node.left != null) {
randomTreeImpl(node.left, numbers, index);
}
if (node.right != null) {
randomTreeImpl(node.right, numbers, index);
}
}
let root = new TNode(null);
randomTreeImpl(root);
root.print();
}
let numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
randomTree(numbers);
// 6
// - 8
// - - 3
// - - 13
// - - - 4
// - - - - 7
// - - - 1
// - - - - 14
// - - - - - 17
// - - - - - - 15
// - - - - - - 9
// - - - - - - - 16
// - - - - - - - - 18
// - - - - - - - 5
// - - - - - - - - 20
// [Finished in 0.1s]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment