数据结构和算法
文章平均质量分 75
UncleMing5371
身无一物的极简主义者。崇尚极简主义,无论代码还是生活。
展开
-
树(Tree)相关知识
数据结构中最重要的一种结构——树(Tree)相关知识的介绍,本文包括对树的定义、节点、树的度、树的深度等相关内容的介绍,以及最重要的数的存储结构的形式。原创 2017-01-05 16:15:52 · 889 阅读 · 0 评论 -
二叉树创建和遍历(Java版实现)
在学习二叉树相关知识之后,很多同学问到如何构建一颗二叉树?掌握了上文介绍的知识构建一颗二叉树其实很简单,只要保证每个节点的度不大于2,同时注意节点左右子节点的顺序,每个节点的数据结构除了保存数据元素外,分别定义指向左右节点的指针;按照以上这几项原则可以构建任意形状的二叉树。 本文将使用Java代码把一个数组转为二叉链表(注:这里构建的二叉树是完全二叉树);同时将使用递归和非递归两种方式,对原创 2017-01-07 13:45:31 · 621 阅读 · 0 评论 -
字符串模式匹配——KMP
本文从常见的字符串模式匹配开始,以通俗易懂的语言阐述了KMP算法原理和适用的场景,编写尽量避免使用晦涩的语言及复杂的数学公式,只为作为学习笔记记录个人的理解过程,追求理论的同学请绕行到《算法导论》。原创 2016-12-29 12:37:51 · 2383 阅读 · 1 评论 -
线索二叉树原理及前序、中序线索化(Java版)
一、线索二叉树原理 前面介绍二叉树原理及特殊二叉树文章中提到,二叉树可以使用两种存储结构:顺序存储和二叉链表。在使用二叉链表的存储结构的过程中,会存在大量的空指针域,为了充分利用这些空指针域,引申出了“线索二叉树”。回顾一下二叉链表存储结构,如下图: 通过观察上面的二叉链表,存在着若干个没有指向的空指针域。对于一个有n个节点的二叉链表,每个节点有指向左右节点的2个原创 2017-01-07 17:02:49 · 16582 阅读 · 15 评论 -
后序线索化二叉树(Java版)
前面介绍了前序线索化二叉树、中序线索化二叉树,本文将介绍后序线索化二叉树。之所以用单独的一篇文章来分析后序线索化二叉树,是因为后序线索化二叉树比前序、中序要复杂一些;另外在复习线索化二叉树的过程中,大部分讲解数据结构的书籍中都是以中序线索化为例,在网上搜索也很少有详细讲解前序、后序线索化的文章,对于使用Java语言编写的代码更是凤毛麟角,因此决定把个人的理解过程记录下,并分享给有需要的同学参考。原创 2017-01-09 17:52:56 · 5287 阅读 · 8 评论 -
哈夫曼树(huffman)
假设有n个权值{w1, w2,...,wn},构造一棵有n个叶子节点的二叉树,每个叶子节点带权值wk,每个叶子节点的路径长度为lk,我们通常记作,其中带权路径WPL最小的二叉树称做”哈夫曼树",也叫做"最优二叉树"。原创 2017-01-10 16:27:49 · 1752 阅读 · 0 评论