我是 C 编程的新手,我正在用 C 学习 C 算法。
这是我关于如何定义二叉树node
数据结构的问题。
使用或不使用父节点指针
以下是定义Node
数据结构的 2 个典型示例代码。
没有父节点指针
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
吗?