不平衡的二叉树不能正常工作。 Node.js的

时间:2015-09-04 23:14:28

标签: javascript node.js algorithm binary-search-tree

所以我正在为涉及二分搜索的类解决一个问题,我实现的解决它的算法工作正常但我的预感是,根据问题的参数,轻微的赌博会更有效

  

虚构的HollyBroke镇,Fl由30 x 30块网格组成。街道以美国总统的名字命名,街道数字以数字编号。臭名昭着的双字纵火犯正在镇上挟持人质。他每个星期六选择一所房子进行烧毁,并通过挑战他们猜测每周犯罪的位置来嘲讽警察部门。在他打完比赛之前,他会在非常简短的电话中回答10次猜测,其中包含“是”或“否”的答案。 (他不会留在线上所以呼叫无法追踪。)   当这个臭名昭着的犯罪分子打电话时,这座城市希望你制定一个程序来提供快速反应。

对此的答案很容易创建算法,但我认为中位数-1 /中位数+ 1赌博会更有效。我的预感是,通常情况下,我会得到一个额外的问题,允许我要求关于纵火犯的二元搜索问题,或者如果游戏允许,我会在通话结束前出现在警察面前。如果我事先没有完全解决它,那么在完成后我会有一个非常小的空间来搜索,就像三个或四个块一样紧挨着,

这是我的“赌博”二分查找代码。

`var array = [{"a":30,"b":30,"c":0}]
function findLower(input) {



    var half = Math.floor(input/2);

    if(0 == input%2)

        return (half-1);
    else
        return (half);
};
function findUpper(input) {
    var  half = Math.floor(input/2);

    if(input%2 == 0)
        return (half+1);

    else
        return (half+1);
}
for (var i = 0; i <= 9; i++){
    for (var z = array.length - 1; z >= 0; z--) {
        if (array[z].c = i){        
            if (array[z].a>array[z].b)
                array.push({"a":findLower(array[z].a),"b":array[z].b,"c":array[z].c + 1},{"a":findUpper(array[z].a),"b":array[z].b,"c":array[z].c + 1})
            else
                array.push({"a":array[z].a,"b":findLower(array[z].b),"c":array[z].c + 1},{"a":array[z].a,"b":findUpper(array[z].b),"c":array[z].c + 1})
        }
    };  
}

console.log(array.length);`

它出现了一个荒谬的数组长度,因为它应该是2 ^ 10 + 2 ^ 9 + 2 ^ 8 ..... = 2047 该程序的阵列长度为19683

并且一些阵列在节点级别10肯定不会是30 * 14我确定算法设置正确。我用笔和纸走过了两个层次,看起来它应该可以正常工作。

1 个答案:

答案 0 :(得分:0)

找到它。

   if (array[z].c = i){

应该是

    if (array[z].c == i){ 

它的条件声明并未声明它们相等

我也错了。您只有大约40%的机会在10次猜测中成功定位房屋。