
数据结构
文章平均质量分 81
学习深化数据结构,实现各类数据结构的代码。
暗夜无风
专注python/pytorch/ML/DL知识分享,兼顾C/C++/Java知识
展开
-
「数据结构」并查集详解和案例
目录一、并查集的定义参考一、并查集的定义参考并查集详解并查集原创 2021-07-12 16:40:08 · 427 阅读 · 12 评论 -
「数据结构」二叉树简单吗?重建二叉树了解一下~~~
目录前言实现思路实现代码前言树作为一种重要的数据结构,在面试和笔试中都占有一席之地。而二叉树则是树中最重要的一份子了,看似简单:不就是一个结点两个左右孩子吗,无限套娃吗!实则不然,什么二叉树的镜像,亦或者序列化二叉树,都是复杂烧脑的问题,作为菜鸟的我瑟瑟发抖。但是笨鸟先飞,勤能补拙!今天讲讲如何根据某二叉树的前序和中序遍历结果重建二叉树。实现思路众所周知,二叉树有前序遍历、中序遍历、后序遍历和层序遍历等四种遍历方式,其中前序遍历又称深度优先遍历(DFS),而层序遍历又称广度优先遍历(B原创 2021-06-29 23:50:48 · 387 阅读 · 36 评论 -
汉诺塔问题——明白一个关键状态轻松理解原理和代码
目录前言一、汉诺塔问题起源问题二、问题分析三、代码实现前言 汉诺塔问题是一个经典的算法问题,是递归、栈等的重要应用。而我认为如果要理解该问题的解法,需要了解其中一个关键状态,即类似动态规划中的状态转移方程,而这个状态就是实现递归算法的关键。这里卖个关子,以下将详细分析汉诺塔问题:一、汉诺塔问题起源 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根原创 2021-04-22 21:32:23 · 1861 阅读 · 1 评论 -
排序算法分析及代码实现——五类九种排序(面试考研必备)
目录一、前言二、插入排序2.1 直接插入排序2.2 折半插入排序2.3 希尔插入排序三、交换排序3.1 冒泡排序3.2 快速排序四、选择排序4.1 简单选择排序4.2 堆排序五、归并排序六、基数排序一、前言 排序算法是一类很经典的算法,在面试中经常被问到,需要我们手撕某个排序算法,或者分析其时间、空间复杂度并与其他算法比较优劣。而在考研中,也是数据结构必考知识,还可能涉及稳定性、内外排序问题,可见排序算法是基础中的基础。以下将仅仅简单分析各类排序算法并贴出代码,更详细地可具体百度某类算法。二、插入排原创 2021-04-19 21:59:14 · 818 阅读 · 0 评论 -
二叉树的链式存储——深入了解数据结构代码篇(二)
一、关键需要一个左指针和右指针层序遍历需要队列辅助。每访问一个队头元素,将该元素的左指针和右指针加入其中(如果有的话)。寻找前驱,其实和普通遍历方式一致,不过visit函数修改,变为判断是否找到当前元素,是则返回前驱;否则继续寻找。这里采用全局变量的方式,返回final,pre是前驱,p是需要找的元素。二、代码2.1 结构体定义typedef int ElemType;typedef struct BitNode{ ElemType data; struct BitNod原创 2021-04-16 21:05:47 · 272 阅读 · 0 评论 -
二叉树的顺序存储——深入了解数据结构代码篇(一)
目录关键代码关键顺序存储使用数组,同时顺序存储需要知道节点数n,使用length存储n对于某个节点,2n左子节点,2n+1右子节点,n/2父节点。对于第二点结论,如果对应数组下表从0开始,那么都需要加1。也就是,2n+1左子节点,2n+2右子节点,(n+1)/2父节点。代码#include <iostream>using namespace std;#define MAXSIZE 100typedef int ElemType;typedef struct TreeNo原创 2021-04-14 22:31:04 · 470 阅读 · 0 评论