Почему многие двоичные -древовидные структуры данных в C не имеют указателя родительского узла?

Я новичок в программировании на C, и я изучаю алгоритмы C с помощью C.

Вот моя проблема, связанная с определением двоичного дерева. nodeструктура данных.

Использовать или НЕ использовать указатель родительского узла.

Вот 2 типичных примера кода для определения Nodeструктуры данных.

Без указателя на родительский узел

typedef struct binaryTreeNode_{
  int key;
  void *data;
  binaryTreeNode_ *leftNode;
  binaryTreeNode_ *rightNode;
} binaryTreeNode;

С указателем на родительский узел

typedef struct binaryTreeNode_{
  int key;
  void *data;
  binaryTreeNode_ *leftNode;
  binaryTreeNode_ *rightNode;
  binaryTreeNode_ *parentNode;
} binaryTreeNode;

Мой вопрос

Очевидно, что использование структуры узла с указателем на родительский узел значительно упростит работу. Как обход узла/дерева, DFS/BFS с бинарным деревом. Итак, мой вопрос: , почему некоторые решения основаны на структуре без родительского узла? .

Есть ли исторические причины? Если просто из-за ограничения емкости RAM/DISK, я думаю, что мы можем отказаться от решения, у которого нет родительского узла, не так ли?

Может быть, не относится

Так же, как Связанный список и Двойной связанный список ,должны ли мы использовать двусвязный список для реализации Stackи Queue?

6
задан Tonny Xu 3 May 2012 в 07:03
поделиться