Binary tree 二叉树中的随机植树

Binary tree 二叉树中的随机植树,binary-tree,binary-search-tree,binary-search,Binary Tree,Binary Search Tree,Binary Search,我需要生成一个(平衡的)二叉树,其中一个节点上随机放置一根针,这样我就可以比较不同的盲搜索算法。我已经生成了树和搜索,但是我正在努力解决如何随机分配一个节点作为针。为了使比较公平,指针需要近似一个随机节点,否则可能会扭曲结果。(50%的针应位于最底层等) 最好的答案是一个算法,给定根节点和深度,它将指定一个节点作为指针,但其他答案将被接受。快速代码转储解决方案,以帮助将来的任何人 plantNeedle(TreeNode root, int nodes, int random){ //c

我需要生成一个(平衡的)二叉树,其中一个节点上随机放置一根针,这样我就可以比较不同的盲搜索算法。我已经生成了树和搜索,但是我正在努力解决如何随机分配一个节点作为针。为了使比较公平,指针需要近似一个随机节点,否则可能会扭曲结果。(50%的针应位于最底层等)


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

快速代码转储解决方案,以帮助将来的任何人

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
}
plantNeedle(树节点根,int节点,int随机){
//计算轴节点值
int pivot=节点/2+1;
if(random==pivot)root.val=42;//这是我们的新指针
if(random>pivot)plantNeedle(root.right,nodes/2,random pivot);//指针应位于右侧
如果(随机)