0

針をノードの1つにランダムに配置して、(バランスの取れた)二分木を生成する必要があります。これにより、さまざまなブラインド検索アルゴリズムを比較できます。ツリーと検索を生成しましたが、ノードの1つを針としてランダムに割り当てる方法を見つけるのに苦労しています。比較を公平に行うために、針はランダムノードを近似する必要があります。そうしないと、結果が歪む可能性があります。(針の50%は最下層などにある必要があります)

最良の答えは、ルートノードと深さを指定してノードを針として割り当てるアルゴリズムですが、他の答えは受け入れられます。

4

1 に答える 1

0

将来誰にでも役立つソリューションのクイックコードダンプ

plantNeedle(TreeNode root, int nodes, int random){
    //calculate pivot node value
    int pivot=nodes/2+1;
    if(random==pivot)root.val=42;//this is our new needle
    if(random>pivot)plantNeedle(root.right,nodes/2,random-pivot);//needle should be on right
    if(random<pivot)plantNeedle(root.left,nodes/2,random);//needle should be on left
}
于 2012-11-08T04:22:04.280 に答える