TL;DR

  • Le Problème: Mécanique technique du problème CTCI 12.8.
  • L'Approche: CTCI problem 12.8: deep copying a data structure containing pointers and cycle references using std::map pointer lookup.
  • Complexité: Empreinte mémoire et temps optimaux.

Cet article explique clairement le problème CTCI 12.8.

1. Contexte et Énoncé

CTCI problem 12.8: deep copying a data structure containing pointers and cycle references using std::map pointer lookup.

2. Code et Implémentation

struct Node {
    int data;
    Node* ptr1;
    Node* ptr2;
};

Node* copyNode(Node* cur, std::map<Node*, Node*>& nodeMap) {
    if (!cur) return nullptr;
    if (nodeMap.count(cur)) return nodeMap[cur];
    Node* newNode = new Node{cur->data, nullptr, nullptr};
    nodeMap[cur] = newNode;
    newNode->ptr1 = copyNode(cur->ptr1, nodeMap);
    newNode->ptr2 = copyNode(cur->ptr2, nodeMap);
    return newNode;
}

3. Résumé et Cas Limites

Toujours vérifier les conditions aux limites et les valeurs nulles.