function generateTree(idx, num) {
if (num === 1) {
return {id: idx, children:[]}
}
else {
let split = 1 + Math.floor((num - 1) * Math.random());
return {id: idx + split, children: [generateTree(idx, split), generateTree(idx + split + 1, num - split)]}
}
}