随笔分类 -  数据结构

摘要:本文将主要讲述在堆排序和优先级队列中使用的一种数据结构,二叉堆; 一、结构概述 完全二叉堆,首先在逻辑上是树形结构,完全二字则表明是完全的二叉树,其结构如图所示: 结构性: 正是因为是完全结构的二叉树,所以可以将节点映射到数组中,其运算关系如下,i 表示数组下标: 父节点: ; 左孩子:`1 + ( 阅读全文
posted @ 2019-04-17 16:39 三枣 阅读(1167) 评论(0) 推荐(0)
摘要:本文将主要讲述平衡二叉树中的红黑树,红黑树是一种我们经常使用的树,相较于 AVL 树他无论是增加还是删除节点,其结构的变化都能控制在常树次;在 JDK 中的 TreeMap 同样也是使用红黑树实现的; 一、结构概述 红黑树是在AVL 树平衡条件的基础上,进一步放宽条件,从而使得红黑树在动态变化的时候 阅读全文
posted @ 2019-03-11 11:38 三枣 阅读(1236) 评论(0) 推荐(3)
摘要:本文将主要讲述另一种树形结构, B 树 ;B 树是一种 多路平衡查找树 ,但是可以将其理解为是由二叉查找树合并而来;它主要用于在不同存储介质之间查找数据的时候,减少 I/O 次数(因为一次读一个节点,可以读取多个数据); 一、结构概述 B 树,多路平衡查找树,即有多个分支的查找树;如图所示: B 树 阅读全文
posted @ 2019-03-07 16:41 三枣 阅读(756) 评论(0) 推荐(1)
摘要:本文将主要讲述 BBST 家族的另一种相对奇特的树, 伸展树 ;伸展树的相较于其他的 BBST,结构更加简单,因为伸展树不需要平衡因子、颜色等信息,他的节点就是 BST 的节点,同时他甚至没有时刻维护全树的平衡状态,却仍然能保持各项操作达到分摊 ; 一、结构概述 伸展树的结构和二叉树完全相同,只是在 阅读全文
posted @ 2019-03-05 14:19 三枣 阅读(755) 评论(1) 推荐(0)
摘要:本文将主要讲解平衡二叉树中的 AVL 树,其中将重点讲解二叉树的重平衡方法,即左旋和右旋,以及 3+4 重构;这些方法都是后面要讲的 B 树,红黑树等 BBST 的重要基础;此外在看本文之前最好先看一下 "二叉搜索树" ; 一、结构概述 前一篇博客里面讲了,二叉树同时具有 向量的静态查找 和 列表的 阅读全文
posted @ 2019-03-02 22:44 三枣 阅读(826) 评论(0) 推荐(1)
摘要:本文将主要以动图方式展示二叉搜索树的结构,以及动态操作;但是对于基本的概念和性质则不会有过多的提及,如果想系统了解建议查看邓俊辉老师的《数据结构》课程; 一、结构概述 二叉树:融合了 向量的静态操作 (二分查找)和 列表的动态操作 (插入和删除)的优点;使得树成了应用广泛的数据结构; 二叉搜索树:即 阅读全文
posted @ 2019-02-27 17:01 三枣 阅读(1067) 评论(0) 推荐(2)