Я новичок в программировании на 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
?