【问题标题】:B-Tree Node References its "Parent"B-Tree 节点引用它的“父节点”
【发布时间】:2014-11-27 00:23:38
【问题描述】:

我有一个关于 B-Tree 节点的非常简单的问题:

B-Tree 节点引用其“父节点”或包含指向它的指针的节点在概念上是否准确/正确?

我一直在研究不同的 B-Tree 实现,但没有一个包含对代表节点的类中的父节点的引用。

【问题讨论】:

    标签: b-tree


    【解决方案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,但原理是一样的。

    父指针的存在只是为了方便,就像双向链表一样,允许您双向遍历它,而无需像单链表那样维护指向先前节点的指针堆栈。

    没有父指针,您只需使用递归函数遍历树。调用堆栈会跟踪您在树中的位置。

    【讨论】:

    • 是的,我知道我可以添加对父节点的引用。但是,是对 B-Tree 节点定义的父部分的引用还是这只是一种技术可能性?
    • 这是定义的一部分,而不是假设。否则你会如何垂直构建树?
    • 您确定您引用的定义是针对 B-Tree 节点的吗?我知道 B-Tree 节点包括一个子键和指针列表,而不仅仅是一个左右节点,对吧?
    • 它声称它是。等一下,我就写一个。
    • 我认为是的,是的。 Parent 指针只是为了方便起见,就像双向链表一样,您可以双向遍历它,而无需像单链表那样维护指向先前节点的指针堆栈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2011-02-03
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多