二叉树中的随机植物针

时间:2012-10-29 03:03:26

标签: binary-tree binary-search-tree binary-search

我需要生成一个(平衡的)二叉树,其中一个针随机放置在其中一个节点上,因此我可以比较不同的盲搜索算法。我已经生成了树和搜索,但我正在努力弄清楚如何随机分配其中一个节点作为针。为了使比较公平,针需要近似随机节点,否则它可能使结果偏斜。 (50%的针应位于最下层等)

最佳答案是给定根节点和深度的算法,它将指定一个节点作为针,但其他答案将被接受。

1 个答案:

答案 0 :(得分: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
}