access-binary-trees.js

来自「linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自Web」· JavaScript 代码 · 共 51 行

JS
51
字号
/* The Great Computer Language Shootout   http://shootout.alioth.debian.org/   contributed by Isaac Gouy */function TreeNode(left,right,item){   this.left = left;   this.right = right;   this.item = item;}TreeNode.prototype.itemCheck = function(){   if (this.left==null) return this.item;   else return this.item + this.left.itemCheck() - this.right.itemCheck();}function bottomUpTree(item,depth){   if (depth>0){      return new TreeNode(          bottomUpTree(2*item-1, depth-1)         ,bottomUpTree(2*item, depth-1)         ,item      );   }   else {      return new TreeNode(null,null,item);   }}var ret;for ( var n = 4; n <= 7; n += 1 ) {    var minDepth = 4;    var maxDepth = Math.max(minDepth + 2, n);    var stretchDepth = maxDepth + 1;        var check = bottomUpTree(0,stretchDepth).itemCheck();        var longLivedTree = bottomUpTree(0,maxDepth);    for (var depth=minDepth; depth<=maxDepth; depth+=2){        var iterations = 1 << (maxDepth - depth + minDepth);        check = 0;        for (var i=1; i<=iterations; i++){            check += bottomUpTree(i,depth).itemCheck();            check += bottomUpTree(-i,depth).itemCheck();        }    }    ret = longLivedTree.itemCheck();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?