8. 数据结构(PHP实现) -- 线段树的实现

2020-11-15
阅读 3 分钟
1.6k
1. 特征不一定是完全二叉树一定是平和二叉树叶子结点存储的是实际的值,非叶子结点存的是自定义的内容2. 时间复杂度操作时间复杂度查询O(logn)3. 线段树的图解4. 代码 {代码...} 5.示例 {代码...} {代码...}

7. 数据结构(PHP实现) -- 优先队列的底层实现(堆)

2020-11-09
阅读 5 分钟
1.3k
1. 说明:是基于二叉树来实现2. 时间复杂度操作时间复杂度入队O(logn)出队O(logn)3. 插入结点的上浮操作(为了将最大值放在最顶部)(在代码siftUp方法中)4. 弹出最大结点后对最小值的下沉操作(在代码siftDown方法中)5. 代码 {代码...} 6. 示例 {代码...} {代码...}

链表

2020-11-08
阅读 8 分钟
1.9k
<?phpdeclare(strict_types=1);​class Node{ // 该节点的元素值 public $e; // 下一个节点的指针 public $next;​ public function __construct($e = null, $next = null) { $this->e = $e; $this->next = $next; }​ // 将该节点对象的元素值用字符串输出 public function __toString(): string { return (strin...

6. 数据结构(PHP实现) -- 图 (用链表来实现)

2020-11-04
阅读 4 分钟
1.8k
1. 特征每个结点都是以key-value的形式存储2. 时间复杂度操作时间复杂度添加O(1)更新O(n)删除O(n)查询O(n)3. 代码结点代码 {代码...} 图的代码 {代码...} 4. 示例 {代码...} {代码...}

5. 数据结构(PHP实现) -- 集合 (用链表来实现)

2020-11-03
阅读 4 分钟
2.1k
1. 特征集合内的元素不会重复,所以在添加的时候就需要判断是否有元素存在2. 时间复杂度分析操作时间复杂度添加O(1)删除O(n)查询O(n)3. 代码元素结点 {代码...} 集合的代码 {代码...} 4. 示例 {代码...} {代码...}

4.4 数据结构(PHP实现) -- 二分搜索树的结点删除

2020-11-02
阅读 4 分钟
1.2k
1. 删除逻辑删除的结点不存在左儿子:删除的结点不存在右儿子:删除的结点存在左儿子和右儿子:删除的结点的左边所有值都会比该结点小,所以只要在其中拿出最大的一个值替换成该节点即可2. 代码 {代码...}

4.3 数据结构(PHP实现) -- 二分搜索树的遍历(非递归实现)

2020-11-02
阅读 9 分钟
1.2k
基于4.2章节做的延伸,采用非递归的方式来实现前序遍历、中序遍历和后序遍历1. 二分搜索树(本章节都基于该二分搜索树做举例)2. 代码 (在traversalByStack方法中实现了非递归的遍历二叉树) {代码...} 3. 前序遍历代码块 {代码...} 代码流程解析4. 中序遍历代码块 {代码...} 代码流程解析5. 后序遍历代码块 {代码...} 代...

数组

2020-11-01
阅读 10 分钟
1.2k
数组简介静态数组:是在声明时已经确定子数组大小的数组,即数组元素的个数固定不变。动态数组:在声明时没有确定数组大小的数组,即数组元素的个数可以发生变化。(其实也是静态数组,使用扩容resize()方法进行动态调整)构建创建静态数组类创建一个类,类名为”ArrayClass“声明属性data:数组所存具体数据capacity:数...

4.2 数据结构(PHP实现) -- 二分搜索树的遍历(递归实现)

2020-10-30
阅读 6 分钟
1.4k
1. 遍历原则前序遍历:先遍历当前结点,再遍历当前结点的左儿子,最后遍历当前结点的右儿子中序遍历:先遍历当前结点的左儿子,再遍历当前结点,最后遍历当前结点的右儿子后续遍历:先遍历当前结点的左儿子,再遍历当前结点的右儿子,最后遍历当前结点2. 前序遍历示意图3. 中序遍历示意图4. 后序遍历示意图5. 二分搜索树...

4.1 数据结构(PHP实现) -- 二分搜索树的结点插入

2020-10-30
阅读 3 分钟
1k
1. 插入原则:第一个结点为根节点后续插入的结点值如果小于根节点,就成为根节点的左儿子后续插入的结点值如果大于根节点,就成为根节点的右儿子2. 示意图3. 二分搜索树的实现 {代码...} 4. demo {代码...}

平衡二叉搜索树【AVL树】

2020-10-28
阅读 2 分钟
1.5k
先了解下 “平衡因子”:平衡因子是某节点的左右子树的高度差。如下图,红字数字就是每个节点的平衡因子再次注意:节点下的红色数字表示的是 当前节点的平衡因子AVL树的特点:每个节点的平衡因子只可能是1、0、-1(绝对值<=1,如果超过1,称之为"失衡")每个节点的左右子树高度差不超过1搜索、添加、删除的时间复杂度是O(...

3. 数据结构(PHP实现) -- 用数组来实现队列

2020-10-21
阅读 1 分钟
2k
说明:该文章是用数组来实现队列,所以主要会对数组做逻辑操作(数组的逻辑操作在上文有提到 [链接])1. 实现逻辑 {代码...} 2. 执行逻辑 {代码...} 3. 打印结果 {代码...}

数据结构之数组-第一天学习

2020-10-21
阅读 5 分钟
949
数组是一种顺序结构的线性表,所有元素的内存地址是连续的动态数组(Dynamic Array)接口设计size(); // 元素的数量isEmpty(); //是否为空contains(item); // 是否包含某个元素add(E element); // 添加元素到最后面get(int index); // 返回 index 位置对应的元素set(int index,item); // 设置index位置的元素add(int ind...

2. 数据结构(PHP实现) -- 用数组来实现栈

2020-10-21
阅读 2 分钟
1.6k
说明:该文章是用数组来实现栈,所以主要会对数组做逻辑操作(数组的逻辑操作在上文有提到 [链接])1. 实现逻辑 {代码...} 2. 执行逻辑 {代码...} 3. 打印结果 {代码...}

1. 数据结构(PHP实现) -- 数组

2020-10-21
阅读 5 分钟
1.2k
说明:代码使用了composer类的自动加载,并采用psr4命名规范,如不使用可取消namespace的定义1. 实现逻辑 {代码...} 2. 执行逻辑 {代码...} 3. 打印结果 {代码...}