这个B-Tree规范的节点结构是什么?

时间:2016-01-24 07:11:19

标签: structure nodes b-tree

我正在尝试使用以下属性创建B树:

每个节点x都包含以下属性:

  1. x.n是节点x
  2. 中存在的键数
  3. x.key1,x.key2,..... x.keyx.n是节点中存在的键
  4. x.c1,x.c2,......... x.cx.n,x.cx.n + 1是子节点的指针
  5. x.leaf是一个布尔变量,用于显示节点是否为叶节点
  6. 根据此规范,我将如何实现节点的结构:

    struct  Node{
        ...?
    }          
    

1 个答案:

答案 0 :(得分:0)

绘制时的概念结构是这样的。

        a      b      c      d
      /     |      |      |     \
     la     bab    bbc    bcd   gd

     la  = less than a
     bab = between a and b
     bbc = between b and c
     bcd = between c and d
     gd  = greater than d

指针多于元素。

所以N阶的b树最多有N个孩子。因此,使用BTREE_ORDER作为此值,并确保BTREE_ORDER大于1。

结构最有效地完成

struct Node{
    size_t numNodes;
    KEY_TYPE Key[BTREE_ORDER -1];
    struct Node * Children[BTREE_ORDER];
}

因此它有BTREE_ORDER-1个密钥和BTREE_ORDER个子节点的空间。安排取决于代码,并且

Children[0] Key[0] Children[1] Key[1] .... Key[numNodes - 2] Children[ numNodes - 1]