我有一个关于B树节点的非常简单的问题:
B-Tree节点是否在概念上准确/正确地引用其“父节点”或包含指向它的指针的节点?
我一直在研究不同的B-Tree实现,但它们都没有包含对代表节点的类中父节点的引用。
答案 0 :(得分:1)
请参阅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,但原理是一样的。
父指针只是为了方便,就像双向链接列表允许你以两种方式遍历它而不需要像单链表那样维护一堆指向前一个节点的指针。
如果没有父指针,您只需使用递归函数遍历树。调用堆栈会跟踪您在树中的位置。