回 帖 发 新 帖 刷新版面

主题:懂B树的进

下面是一个建立B树根结点的程序.连上左子树pt和右子树pa.
Root=(B_Node *)malloc(sizeof(B_Node));    
    Root->keynum=1;
    Root->parent=NULL;
    Root->key[1]=k;
    Root->key[2]=MAXKEY;
    Root->ptr[0]=pt;
    Root->ptr[1]=pa;
    pt->parent=Root;
    pa->parent=Root;
    return 1;        
请问Root->key[2]=MAXKEY;有什么作用.不加的话调试会出错

回复列表 (共4个回复)

沙发

你先得把树的结构体写出来吧,还有你是用什么存储方式的,是二叉链树还是孩子双亲表示法等等

板凳

typedef struct B_Node                //定义B_树结点类型
{
    int keynum;                        //关键字数目
    B_Node *parent;                    //指向父亲结点的指针            
    KeyType key[M+1];                //关键字数组,下标0未用    
    B_Node *ptr[M+1];                //指向孩子的指针数组
}B_Node;

3 楼

有没有人懂啊.怎么搞的,都不行么?

4 楼

B树分B-和B+树,照楼主的意思应该是指B+树,B+树的定义中有这么一句,所有
非终端结点含有其子树的最大(或最小)关键字,根结点当然就应该包含最大(
或最小)关键字了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册