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

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

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. 后序遍历代码块 {代码...} 代...

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(...