摘要: 引言 Kotlin是一种非常简洁的语言,它省略了java中许多繁重的写法。 基本语法 入门必学 可变类型var,不可变类型val 函数定义 fun 函数名(arg1: type1, arg2: type2) : returnType{ return returnValue } 例如: fun add 阅读全文
posted @ 2021-04-13 00:23 、、、路遥 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 1 描述 在之前描述的AVL树中,对于删除某个元素导致树不平衡的情况,需要进行旋转调整,使之恢复平衡。然而,该过程可能需要沿着parent关系经历O(logn)次旋转操作才可使得整棵树平衡。因此,在此基础上设计出来另外一种数据结构--红黑树,它的添加和删除的旋转操作都是O(1)级别,但需要牺牲一些平 阅读全文
posted @ 2020-06-07 16:46 、、、路遥 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 1 描述 B树中的一个结点存放多个元素,并允许存在多个子结点,元素与子结点的对应关系为N+1关系,如下图所示。 上图秒速了一棵4阶B树(度最多为4),当前元素大于左子树中的任意元素,小于右子树中的任意元素。 1.1 性质 假设我们要构造一棵m阶B树,其存在如下性质: 根节点元素个数:1≤x≤m-1 阅读全文
posted @ 2020-06-05 20:51 、、、路遥 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 1 描述 AVL树是在儿叉搜索树的基础上衍生出来的数据结构。在儿叉搜索树中,高度取决于结点数据的大小的排序和插入顺序,在某些情况下,儿叉排序树的高度非常高,甚至退化成链表,使得其查找效率低下。因此,AVL树引入“平衡因子”的概念,平衡因子=左子树高度-右子树的高度。AVL树规定平衡因子的绝对值不大于 阅读全文
posted @ 2020-06-03 16:46 、、、路遥 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 1 描述 在二叉树的基础上衍生出的数据结构,对任意结点左右孩子节点之间都有顺序,如:左孩子<当前节点<右孩子节点。因此,提高了有序数据的搜索速率,类似于二分搜索法。 关于二叉树的在之前的章节中有描述。具体参考:二叉树的描述与实现 2 算法实现 2.1 接口设计 public interface BS 阅读全文
posted @ 2020-06-03 16:41 、、、路遥 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 1 描述 二叉树一个节点有两个后继,称为左右孩子,左右孩子有序不能相互跌倒。二叉树又衍生出多种不同的形态,如红黑树、二叉排序树、B-树、AVL树等。(本节主要提供二叉树的算法实现,没有提供其原理和操作流程的讲解) 2 算法实现 2.1 节点设计 protected static class Node 阅读全文
posted @ 2020-06-03 16:38 、、、路遥 阅读(237) 评论(0) 推荐(0) 编辑