考虑与N = 2^h的完整二进制树该随机过程 - 1个节点实施二叉树一个随机过程
假设我有N = 2^H-1个节点的二进制树中,最初所有节点都未标记随着时间的推移,通过此过程节点被标记。假设节点每次有[1,N]范围内的唯一标识符,我向你发送一个节点的标识符。当你收到一个发送的节点。您将其标记并调用以下标记规则,该规则在发送下一个节点之前生效。
如果节点及其兄弟标记被标记,则其父标记被标记。 如果一个节点及其父节点被标记,另一个兄弟节点被标记。 标记规则在发送下一个节点之前尽可能递归地应用。
我需要实现这一进程,并运行它用于h十倍范围[10,20],看看有多少次我应该向完全标记的所有节点的节点...
我的问题是:什么是最好的方式来表示这个问题的二叉树? 我脑海里想的是把它当作一堆,并使用int nodes[1 << h]
的数组,并做标记规则,或者我使用基于指针的结构像BST?
另一件我很难理解的事情是,我应该如何实现上述的标记规则?(你也应该注意,这个规则必须尽可能多地使用)我的意思是以一个节点作为参数的函数和...