Member 12719168 Ответов: 1

Как работает удаление в структуре данных дерева BST?


.[^] / / полный код

else if(root->left == NULL) {         //confusing part in deleting node with one child    
struct Node *temp = root;
root = root->right;
delete temp;
}


После удаления temp, как насчет связи между родителем temp и текущим корнем ? Здесь я немного запутался. пожалуйста, объясните .

Что я уже пробовал:

Я пытался связать корень с последним листом, но каким-то образом я теряю связь корня, чтобы соединить его с листовым узлом.

1 Ответов

Рейтинг:
0

CPallini

перед удалением

root = node1
      /    \
    NULL  node2
          /   \
         whatever

после удаления
root = node2
       /   \
      whatever


Member 12719168

если я хочу удалить узел 2, то формат соединения node1 с дочерним узлом node2 (в случае только одного дочернего узла ) После рекурсии node2 становится моим корнем .. так что root =root - & gt;right..... будет ли соединение b/w с родителем не будет отсечено ...? можете ли вы уточнить эту часть самостоятельно. Спасибо!!