数据结构

您所在的位置:网站首页 分类树的作用有哪些方面 数据结构

数据结构

2024-06-04 04:38| 来源: 网络整理| 查看: 265

文章目录 数据结构---树1.二叉树2.二叉查找树-BST3.平衡二叉树-AVL4.红黑树5.哈夫曼树6.B树7.B+树8.R树 总结

数据结构—树

本章总结数据结构中一些树的特征和结构。转载自这里

img

1.二叉树 二叉树:最多有两颗子树的树被称为二叉树。

img

二叉树又分为斜树,满二叉树,完全二叉树:

斜树:所有节点都只有左子树的二叉树叫做左斜树,所有节点都只有右子树的二叉树叫做右斜树。(本质就是链表)

img

满二叉树:二叉树中所有非叶子结点的度都是2,且叶子结点都在同一层次上。

img

完全二叉树:如果一个二叉树与满二叉树前m个节点的结构相同,这样的二叉树被称为完全二叉树。

img

2.二叉查找树-BST

二叉查找树(Binary Search Tree)是指一棵空树或者具有下列性质的二叉树:

若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉查找树;没有键值相等的节点。

二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低为 O ( log ⁡ n ) 。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、多重集、关联数组等。

在这里插入图片描述

3.平衡二叉树-AVL

含有相同节点的二叉查找树可以有不同的形态,而二叉查找树的平均查找长度与树的深度有关,所以需要找出一个查找平均长度最小的一棵,那就是平衡二叉树,具有以下性质:

要么是棵空树,要么其根节点左右子树的深度之差的绝对值不超过1;其左右子树也都是平衡二叉树;二叉树节点的平衡因子定义为该节点的左子树的深度减去右子树的深度。则平衡二叉树的所有节点的平衡因子只可能是-1,0,1。

img

4.红黑树

红黑树也是一种自平衡的二叉查找树。其特点如下:

每个结点要么是红的要么是黑的。(红或黑)根结点是黑的。 (根黑)每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。 (叶黑)如果一个结点是红的,那么它的两个儿子都是黑的。 (红子黑)对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。(路径下黑相同)

img

其一些最广的用法如下:

Java ConcurrentHashMap & TreeMapC++ STL: map & setlinux进程调度Completely Fair Scheduler,用红黑树管理进程控制块epoll在内核中的实现,用红黑树管理事件块nginx中,用红黑树管理timer等 5.哈夫曼树

哈夫曼树又称最优二叉树。是一种带权路径长度最短的二叉树,一般可以按下面步骤构建:

将所有左,右子树都为空的作为根节点。在森林中选出两棵根节点的权值最小的树作为一棵新树的左,右子树,且置新树的附加根节点的权值为其左,右子树上根节点的权值之和。注意,左子树的权值应小于右子树的权值。从森林中删除这两棵树,同时把新树加入到森林中。重复2,3步骤,直到森林中只有一棵树为止,此树便是哈夫曼树。

img

6.B树

B树(英语: B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一种自平衡的m阶树,与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。其特点如下:

根结点至少有两个子女。每个中间节点都包含k-1个元素和k个孩子,其中 m/2


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3