次の構造を持つノードが与えられた場合
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) 時間がかかります。
これよりも良いアプローチがあれば提案してください。