![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
猫萌萌
博文记录作者工作学习中的一些知识内容与心得体会,希望能与大家一起交流学习,共同进步,疏漏错误之处欢迎批评指正。
展开
-
二叉树的三种遍历
1.先序遍历:按照根节点->左子树->右子树的顺序访问二叉树先序遍历:(1)访问根节点;(2)采用先序递归遍历左子树;(3)采用先序递归遍历右子树;(注:每个节点的分支都遵循上述的访问顺序,体现“递归调用”)先序遍历结果:A BDFE CGHI思维过程:(1)先访问根节点A,(2)A分为左右两个子树,因为是递归调用,所以左子树也遵循“先根节点-再左-再右”的...原创 2018-09-11 16:40:11 · 19504 阅读 · 2 评论 -
二叉树层序遍历(基于队列)-Java实现
原创 2019-03-06 12:55:23 · 1514 阅读 · 0 评论 -
数据结构常用的排序算法详解
推荐阅读数据结构常见的八大排序算法(详细整理)原创 2019-03-06 13:18:36 · 392 阅读 · 0 评论 -
Java语言实现优先级队列
这篇文章写得很好,值得推荐。Java数据结构与算法解析(十三)——优先级队列原创 2019-03-03 23:41:50 · 296 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
优质文档值得推荐哈夫曼(huffman)树和哈夫曼编码原创 2019-03-04 01:20:23 · 190 阅读 · 0 评论 -
图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
优质文档值得推荐图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)原创 2019-03-04 01:53:17 · 746 阅读 · 0 评论 -
二叉树的存储方式以及递归和非递归的三种遍历方式
优质文档值得推荐二叉树的存储方式以及递归和非递归的三种遍历方式原创 2019-03-04 02:00:14 · 311 阅读 · 0 评论 -
图的邻接矩阵表示-Java语言实现
原创 2019-03-04 14:28:27 · 423 阅读 · 0 评论 -
求二叉树中结点的数量和该二叉树的高度-Java实现
求二叉树的结点数量求二叉树的高度原创 2019-03-05 20:43:46 · 834 阅读 · 7 评论 -
常见的五类排序算法图解和实现(多关键字排序:基数排序以及各个排序算法的总结)
优质文档值得推荐常见的五类排序算法图解和实现(多关键字排序:基数排序以及各个排序算法的总结)原创 2019-03-04 01:58:32 · 1012 阅读 · 0 评论 -
常见的五类排序算法图解和实现(选择类:简单选择排序,锦标赛排序,树形选择排序,堆排序)
优质文档值得推荐常见的五类排序算法图解和实现(选择类:简单选择排序,锦标赛排序,树形选择排序,堆排序)原创 2019-03-04 01:56:48 · 613 阅读 · 0 评论 -
二叉搜索树中删除一个元素
原创 2019-02-22 02:50:04 · 754 阅读 · 0 评论 -
二叉搜索树中插入一个元素
原创 2019-02-22 01:41:30 · 1832 阅读 · 0 评论 -
二分查找
Binary Search: Recursive algorithmBinary Search: Non-recursive algorithm原创 2019-02-22 00:45:10 · 150 阅读 · 0 评论 -
图的邻接矩阵和邻接表表示以及深度和广度优先遍历
参看文档:java数据结构之图(邻接矩阵和邻接表)原创 2019-03-04 17:36:12 · 4595 阅读 · 0 评论 -
二叉树非递归遍历(基于栈)-Java实现
原创 2019-03-06 12:48:57 · 1187 阅读 · 0 评论 -
单链表中的增删改查-Java实现
优质文档值得推荐[Java]单链表中的增删改查原创 2019-03-06 10:29:16 · 379 阅读 · 0 评论 -
已知树的前、中、后序遍历中的任意两个,求树的第三种遍历序列
例如:中序遍历DBEAFC,前序遍历ABDECF,求后序遍历?从前序的第一个结点开始确定根,中序决定左子树和右子树,如第一个结点A,根据中序可知,A的左子树是DBE,右子树是FC,再从前序中确定第二个根B,根据中序可知B的左子树是D,右子树为E,依次重复执行,直到遍历完所有结点。所以后序遍历DEBFCA参考链接...原创 2018-09-14 17:17:27 · 866 阅读 · 0 评论 -
队列的创建Java实现
关键词:结点类、队列类、队头队尾指针1.结点类的设计class QueueNode { int data; QueueNode next; QueueNode(){ data = 0; next = null; } QueueNode(int d, QueueNode n){ data = 0; next = n; }}2.链式队列类的设计(基于链表...原创 2019-01-18 22:51:38 · 4775 阅读 · 0 评论 -
二叉树的创建Java实现
关键词:二叉树结点类、二叉树类1.二叉树结点类的设计class BiTreeNode { int data;//设数据域非负 BiTreeNode leftChild; BiTreeNode rightChild; public BiTreeNode(){ data = -1;//负数表示空 leftChild = rightChild = null; } pub...原创 2019-01-20 14:38:35 · 7184 阅读 · 2 评论 -
单链表的创建Java实现
关键词:头结点,头指针,结点,指向下一个结点的指针用Java语言创建一个单链表就是创建一个结点类Node和一个单链表类LinList,然后在你需要一个单链表的时候,在你程序的某个方法内new一个LinList类的对象,然后再例如可以调用该对象的insert()方法往这个单链表内插入数据。1.单链表的结点类设计(对单个结点的设计,通常包含数据域和指针域两个属性)public class...原创 2019-01-15 17:07:56 · 1419 阅读 · 0 评论 -
堆栈的创建Java实现
关键词:结点类,堆栈类,栈顶指针1.结点类的设计和单链表结点类的设计是类似的的class StackNode { int data;//数据域 StackNode next;//指针域}2.链式堆栈类的设计(基于链表实现)class LinStack { private StackNode top;//栈顶指针 public LinStack(){//初始化,...原创 2019-01-17 00:01:10 · 1704 阅读 · 0 评论 -
二叉搜索树
原创 2019-02-22 01:24:43 · 168 阅读 · 0 评论 -
如何将一棵树转化成二叉树
要点:从这棵树的根结点开始,从上到下,看每一个结点,把你正在看的结点的孩子放在左子树,兄弟放在又子树。口诀:1. 将 节点的孩子 放在左子树;2. 将 节点的兄弟 放在右子树。关于这个问题,最好的办法就是记住一道例题了,因为语言不是很好描述,也不容易看懂描述。例题:或者有另一种理解方法:步骤:1.在所有兄弟结点之间加一连线2.对每个结点,除了保留与其长子...原创 2019-02-21 01:44:59 · 49846 阅读 · 16 评论 -
如何把森林转化成二叉树
具体方法是:1.将森林中的每棵树变为二叉树;2.因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树。如下图所示:...原创 2019-02-21 01:55:35 · 13983 阅读 · 1 评论 -
图的邻接表及Java语言实现
边结点:(图中的边)图结点:(图中的结点)图的类设计:原创 2019-03-06 00:45:29 · 640 阅读 · 0 评论 -
图的深度优先遍历-Java实现
基于图的邻接表存储结构原创 2019-03-06 01:02:28 · 650 阅读 · 0 评论 -
图的广度优先遍历-Java实现
原创 2019-03-06 01:48:43 · 1104 阅读 · 0 评论 -
平衡二叉树(AVL树)
优质文档值得推荐:数据结构-AVL树的旋转图解数据结构树之AVL树例题:原创 2019-03-06 02:06:42 · 262 阅读 · 0 评论 -
线索二叉树
线索二叉树提出的原因:在普通二叉树中,每个结点都有左右两个指针域,这些指针域都指向结点类型的数据对象,当二叉树稀疏时,很多结点的左右两个指针域就显得浪费存储空间了。因此,提出了一种方法以提高空间利用率,令原来二叉树结点的空指针指向这棵二叉树在某种遍历序列中的前驱结点或后继结点,此时称这个指向某种遍历序列中的前驱或后继结点的指针为线索。例如,在某棵二叉树的先序遍历序列中,针对某个结点Node...原创 2019-03-03 01:09:44 · 242 阅读 · 0 评论 -
数据结构-堆
数据结构-堆(Heap)原创 2019-03-08 10:12:17 · 274 阅读 · 0 评论