43 lines
1.1 KiB
Plaintext
43 lines
1.1 KiB
Plaintext
function mainThread() {
|
|
var maxDepth = max(6, Number(arg[0] || 16));
|
|
|
|
var stretchDepth = maxDepth + 1;
|
|
var check = itemCheck(bottomUpTree(stretchDepth));
|
|
log.console(`stretch tree of depth ${stretchDepth}\t check: ${check}`);
|
|
|
|
var longLivedTree = bottomUpTree(maxDepth);
|
|
|
|
for (var depth = 4; depth <= maxDepth; depth += 2) {
|
|
var iterations = 1 << maxDepth - depth + 4;
|
|
work(iterations, depth);
|
|
}
|
|
|
|
log.console(`long lived tree of depth ${maxDepth}\t check: ${itemCheck(longLivedTree)}`);
|
|
}
|
|
|
|
function work(iterations, depth) {
|
|
var check = 0;
|
|
for (var i = 0; i < iterations; i++)
|
|
check += itemCheck(bottomUpTree(depth));
|
|
log.console(`${iterations}\t trees of depth ${depth}\t check: ${check}`);
|
|
}
|
|
|
|
function TreeNode(left, right) {
|
|
return {left, right};
|
|
}
|
|
|
|
function itemCheck(node) {
|
|
if (node.left == null)
|
|
return 1;
|
|
return 1 + itemCheck(node.left) + itemCheck(node.right);
|
|
}
|
|
|
|
function bottomUpTree(depth) {
|
|
return depth > 0
|
|
? new TreeNode(bottomUpTree(depth - 1), bottomUpTree(depth - 1))
|
|
: new TreeNode(null, null);
|
|
}
|
|
|
|
mainThread()
|
|
|
|
$stop() |