【发布时间】:2014-11-27 00:23:38
【问题描述】:
我有一个关于 B-Tree 节点的非常简单的问题:
B-Tree 节点引用其“父节点”或包含指向它的指针的节点在概念上是否准确/正确?
我一直在研究不同的 B-Tree 实现,但没有一个包含对代表节点的类中的父节点的引用。
【问题讨论】:
标签: b-tree
我有一个关于 B-Tree 节点的非常简单的问题:
B-Tree 节点引用其“父节点”或包含指向它的指针的节点在概念上是否准确/正确?
我一直在研究不同的 B-Tree 实现,但没有一个包含对代表节点的类中的父节点的引用。
【问题讨论】:
标签: b-tree
参见https://stuff.mit.edu/afs/sipb/user/gamadrid/nscript/btreep.h,它将节点定义为:
typedef struct node {
struct node *parent;
struct node *left;
struct node *right;
} *btnode;
不是b-tree,但原理是一样的。
父指针的存在只是为了方便,就像双向链表一样,允许您双向遍历它,而无需像单链表那样维护指向先前节点的指针堆栈。
没有父指针,您只需使用递归函数遍历树。调用堆栈会跟踪您在树中的位置。
【讨论】: