
二叉树
文章平均质量分 72
数据结构与算法 --- 二叉树
小馋喵星人
这个作者很懒,什么都没留下…
展开
-
【经典算法实现 29】根据二叉树 中序 + 前序 遍历结果,计算出树 及 后序遍历结果
【经典算法实现 29】根据二叉树 中序遍历结果 + 前序遍历结果,计算原本树结构 及 其后序遍历结果一、获取一颗树的前序、中序、后序遍历结果1. 前序、中序、后序遍历代码二、题目:根据提供的前序、中序遍历结果,计算树及后续遍历结果2.1 分析思路2.2 核心代码实现2.3 完整代码2.4 运行结果一、获取一颗树的前序、中序、后序遍历结果在前面文章中《【经典算法实现 28】广度优先法 - 创建满二叉树 完整代码实现》,我们实现了创建一颗满二叉树,在其基础上,我们来获取下一颗树的前序、中序 、后序结果,作原创 2020-08-23 19:59:41 · 428 阅读 · 0 评论 -
【经典算法实现 28】广度优先法 - 创建满二叉树 完整代码实现
【经典算法实现 28】广度优优先 - 创建满二叉树 完整代码实现一、广度优先算法思路二、循环队列实现2.1 循环队列测试代码运行结果三、广度优优先算法 - 创建满二叉树3.1 算法实现3.2 完整代码 (带详细注释)3.3 运行结果一、广度优先算法思路创建根节点 A将A 放入队列,此是队列中数据为 A从 队列取出A,判断 A 是否有左节点,如果没有就创建B,然后将 B 放入队列中 ,此时队列数据为 B判断 A 是否有右节点,如果没有就创建C,然后将 C 放入队列中,此时 队列数据为 B C原创 2020-08-23 13:14:24 · 1216 阅读 · 0 评论 -
【经典算法实现 27】乱序数组 实现创建 有序二叉树
【经典算法实现 27】乱序数组 实现创建 有序二叉树在前面文章中,我们实现了二叉树的创建,二叉树的平衡等问题的处理,本文,我们来实现一下在不排序的情况下,实现对乱序数组创建有序二叉树。先说明下,本文中,所谓的有序二叉树是指,中续遍历时有序的二叉树,如下图,中续遍历结果为: 3-4-5-6-7-8-9-10-11好,开始写代码吧!// 乱序数组 实现创建有序二叉树 #include <stdio.h>typedef struct Node{ struct Node原创 2020-08-21 16:50:29 · 671 阅读 · 0 评论 -
【经典算法实现 26】二叉树的平衡代码实现 - 自动检测及调整不平衡树(实现对 LR 及 RL 型支持)(最终版代码)
【经典算法实现 25】有序不平衡二叉树 ==> 有序平衡二叉树 代码实现有序不平衡二叉树 ==> 有序平衡满二叉树 移动原理如下,参考下图解:将 4 作为新的根节点(移动节点6)将 6 移动为 4 的右节点, 将 4 的右节点移动为 6 的左节点(移动节点3)取出3,将 4 的左节点指向3 的左节点,将4 的左节点->右节点 指向3, 将3 的左节点指向 2的右节点完整 代码 实现如下:// DSW 左旋转法创建有序数组的平衡二叉树 #include <std原创 2020-08-21 11:17:45 · 491 阅读 · 0 评论 -
【经典算法实现 25】二叉树的平衡代码实现 - 自动检测及调整不平衡树
【经典算法实现 24】二叉树的平衡代码实现 - 自动检测及调整不平衡树一、不平衡树的检测二、二叉树的自动平衡处理三、自动平衡处理实测结果四、完整代码在前面文章中,我们实现了不衡树的 左平衡 及右平衡代码实现。《【经典算法实现 23】二叉树的平衡代码实现(左平衡)- 顺时针旋转》《【经典算法实现 24】二叉树的平衡代码实现(右平衡)- 逆时针旋转》但实际的二叉树,可并不会像之前的例子一样美好,因为一颗树,可能同时存在需要左平衡 和 右平衡 ,或者多次平衡操作的情况。本文主要是讨论下,不平衡树的检测,原创 2020-08-20 16:12:45 · 502 阅读 · 0 评论 -
【经典算法实现 24】二叉树的平衡代码实现(右平衡)- 逆时针旋转
【经典算法实现 24】二叉树的平衡代码实现(右平衡)- 逆时针旋转一、二叉树右平衡算法(逆时针旋转)1.1 二叉树右平衡算法(逆时针旋转)1.2 运行结果1.3 完整代码在前面《【经典算法实现 23】二叉树的平衡代码实现(左平衡)- 顺时针旋转》中我们实现了不平衡树的左平衡处理,本文代码是在前面的基础了写的。平衡二叉树:左子树 与 右子树 深度差 <= 1ps: 由于加上实现代码,篇幅比较大,因此本章平稀二叉树的情况,将分为几篇文章来写分别为:(1)左平衡,(2)右平衡,(3)左右平原创 2020-08-20 14:03:43 · 666 阅读 · 0 评论 -
【经典算法实现 23】二叉树的平衡代码实现(左平衡)- 顺时针旋转
【经典算法实现 23】二叉树的平衡代码实现(左平衡)- 顺时针旋转一、先创建一颗不平衡二叉树二、左平衡算法2.1 二叉树左平衡算法(顺时针旋转)2.2 二叉树左平衡算法(顺时针旋转) 运行结果2.2.1 实例12.2.2 实例22.2.3 实例3三、左平衡完整代码在前面文章《【经典算法实现 22】根据数组动态创建二叉树(实现方法一)》,我们实现了自动创建二叉树的代码。今天我们重点来分析不平衡的二叉树,如何对二叉树进行 左/右 旋转,从而使其平衡。平衡二叉树:左子树 与 右子树 深度差 <=原创 2020-08-20 12:07:37 · 687 阅读 · 0 评论 -
【经典算法实现 22】根据数组动态创建二叉树(实现方法一)
本文主要实现,根据数据动态创建二叉树的功能。实现结果如下: ----->1 ----->2 ----->3 ----->4 ----->6 ----->5原创 2020-08-19 18:14:00 · 1097 阅读 · 1 评论 -
二叉查找树的平衡(DSW)
二叉查找树的平衡(DSW)一、有序数组创建二叉查找树树适合于表示某些领域的层次结构(比如Linux的文件目录结构),使用树进行查找比使用链表快的多,理想情况下树的查找复杂度O(log(N)),而链表为O(N),但理想情况指的是什么情况呢?一般指树是完全平衡的时候。哪最坏的情况是什么呢?就是树退化为链表的时,这时候查找的复杂度与链表相同,就失去了树结构的意义。所以树的平衡是非常重要的,这一节我们主要讨论树的平衡问题。如果树中任一节点的两个子树的高度差为0或者1,该二叉树就是高度平衡的。上图中转载 2020-08-20 17:44:43 · 625 阅读 · 0 评论 -
【经典算法实现 20】Merkle Tree(默克尔树)C代码实现--- 进展3:实现字符串的动态切割,实现默克尔树存储字符串
【经典算法实现 20】Merkle Tree(默克尔树)C代码实现--- 进展3:实现字符串的动态切割,实现默克尔树存储字符串三、进展2:2020/08/18 优化数据结构,添加Hash值,实现内存回收3.1 优化默克尔树数据结构3.2 实现字符串的哈希值简单计算3.3 实现字符串的动态切割,分割为小的词组3.4 字符串数组内存动态回收3.5 完整代码(代码中包含详细注释)3.6 代码运行结果本文接着前文继续实现代码《【经典算法实现 18】Merkle Tree(默克尔树)C代码实现— 进展1:先实现能原创 2020-08-18 14:36:38 · 1423 阅读 · 5 评论 -
【经典算法实现 19】Merkle Tree(默克尔树)C代码实现--- 进展2:优化数据结构,添加Hash值,Merkle Tree 内存动态回收
【经典算法实现 19】Merkle Tree(默克尔树)C代码实现--- 进展2:优化数据结构,添加Hash值,Merkle Tree 内存动态回收二、进展2:2020/08/18 优化数据结构,添加Hash值,实现内存回收2.1 优化默克尔树数据结构2.2 添回Hash值2.3 实现Merkle Tree 内存动态回收(前续遍历方式)2.4 完整代码(代码中包含详细注释)2.5 代码运行结果本文接着前文继续实现代码《【经典算法实现 18】Merkle Tree(默克尔树)C代码实现— 进展1:先实现能原创 2020-08-18 11:29:12 · 2427 阅读 · 1 评论 -
【经典算法实现 18】Merkle Tree(默克尔树)C代码实现--- 进展1:先实现能够动态生成一颗树
有关 Merkle Tree 的具体原理,本文就不再赘述了,详细可参考《Merkle Tree(默克尔树)原理解析》我们今天来实现一个 Merkle 树,用来存储一段话,其中叶子节点下存储的是这段话中的每个独立字符串。编辑环境:C-Free 5.0,开始吧。...原创 2020-08-14 15:56:25 · 2791 阅读 · 0 评论 -
Merkle Tree(默克尔树)原理解析
Merkle Tree(默克尔树)原理解析一、Merkle Tree1.1 Merkle Tree的特点二、Hash list三、Merkle tree VS Hash list四、Merkle Tree的操作4.1 创建Merkle Tree4.2 检索数据块4.3 更新,插入和删除五、Merkle Tree的应用1、数字签名2、P2P网络3、Trusted Computing4、IPFS5、BitCoin和Ethereum6、Ethereum的Merkle Proof7、MPT(Merkle Patri转载 2020-08-14 15:47:03 · 6713 阅读 · 0 评论