给定一个具有以下结构的节点
class Node {
int data,
Node* P1,
Node* p2;
}
我们需要确定该节点是表示循环双向链接列表还是二叉树。在我看来,我们需要开始在一个方向上遍历给定的节点
node = givenNode;
while(node->P1 != null && node->P1 != givenNode)
{
node = node->p1
}
if(node == givenNode) // It means Circular DLL
else if(node == null) // It means Tree
检测到这一点需要 O(n) 时间。
请建议是否有比这更好的方法。