0

我需要生成一个(平衡)二叉树,其中一个节点上随机放置一根针,这样我就可以比较不同的盲搜索算法。我已经生成了树和搜索,但我正在努力研究如何随机分配一个节点作为针。为了比较公平,needle 需要逼近一个随机节点,否则它会扭曲结果。(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 回答