我需要生成一个(平衡)二叉树,其中一个节点上随机放置一根针,这样我就可以比较不同的盲搜索算法。我已经生成了树和搜索,但我正在努力研究如何随机分配一个节点作为针。为了比较公平,needle 需要逼近一个随机节点,否则它会扭曲结果。(50%的针应该在最底层等)
最好的答案是给定根节点和深度的算法,它将分配一个节点作为针,但其他答案将被接受。
我需要生成一个(平衡)二叉树,其中一个节点上随机放置一根针,这样我就可以比较不同的盲搜索算法。我已经生成了树和搜索,但我正在努力研究如何随机分配一个节点作为针。为了比较公平,needle 需要逼近一个随机节点,否则它会扭曲结果。(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
}