例如: - 以二叉树结构连接的计算机。有20个房间将每个房间视为二进制树中的级别,从房间0(级别0)开始,其中放置主计算机并且其所有子节点(计算机)都在房间1(级别1)中,依此类推。每台计算机根据其在房间中的位置进行编号,如计算机1,计算机2,计算机3和计算机4(房间2中的最大计算机数量等于2增加到电力2)在房间1(等级1)。现在从root如果我想进入12号房间的计算机756,那么最快的算法或方法是什么。
考虑到上面的图像作为一个例子,4级总共有16个节点(1到16个说),它们被提升到4个幂。如果树很大(比如树有50个级别),这是最快的访问算法50级的节点编号为1,099,511,628,800
答案 0 :(得分:4)
如果我正确理解了您的问题,给定N
和L
您希望找到从N
级别的根到L
节点的路径。我假设每个级别的节点从左到右编号,N
和L
从零开始。
如果使用N
的二进制表示,这很简单:将N
表示为L
位的二进制数。现在来看看从最重要到最不重要的这些位。 0意味着你需要去左边的孩子,1意味着你需要去找右边的孩子。
例如,要找到级别#3中的节点#3:二进制节点号为011
。所以从根本上,你向左,向右,向右走。