zoukankan      html  css  js  c++  java
  • B树

    B树

    难点。

    回顾:二叉查找树(BST)

    typedef struct{
        int key;
        struct BSTNode *lchild,*rchild;
    }BSTNode,*BSTree;
    

    能否变为m叉查找树?

    五叉查找树

    struct Node{
        ElemType keys[4]; //最多4个关键字
        struct Node *child[5];	//最多5个孩子
        int num;			//结点中有几个关键字
    }
    

    最少1个关键字,2个分叉

    最多4个关键字,5个分叉

    结点内关键字有序

    如何查找

    区间里判断左边还是右边

    一开始,9比22小,走22左边的指针路线

    9在下一层的这里对比,比5大,指针往右移,和11对比,比11小,走11左边的指针路线

    9在第三层这对比,比6大,指针右移,比8大,指针右移,到9相等。找到

    一开始,41比22大,走22右边的指针路线

    到下一层,41比36大,指针右移,和45对比,比45小,走45左边指针路线

    到第三次,比40大,指针右移,比42小,走42左边指针路线,等于null,查找失败

    每个结点都可以用折半查找哦

    如何保证查找效率

    策略:m叉查找树中,规定除了根节点外,任何结点至少有(向上取整m/2个)分叉

    ,即至少含有有(向上取整m/2 -1)个关键字

    向上取整!!

    例如:5叉排序树,规定除了根节点外,任何结点都至少有3个分叉,2个关键词

    不够平衡也效率差

    策略:m叉查找树中,规定对于任何一个结点其所有子树的高度都要相同

    B树

    总结一下:

    B树的高度

    知识回顾

  • 相关阅读:
    HTTP浅析
    PHP CURL获取cookies模拟登录
    C++ builder 通过WMI方式修改DNS
    C语言List使用样例
    C语言 获取系统临时目录并获取临时文件名
    C语言 写文件样例
    vb wmi 修改ip地址、网关、DNS
    正则表达式校验IP地址
    c语言 vector使用样例
    C++ builder 通过WMI查询网卡对应的序号
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13307761.html
Copyright © 2011-2022 走看看