数据结构——树
文章平均质量分 95
傲决流云
github/gitee:tch0
展开
-
二叉查找树
简单介绍树,基础说多了也没什么意思,这里主要实现二叉查找树。树树,是一种非线性的数据结构,是一种特殊的(没有回路的)图,主要用在涉及到一个问题具有分支情况下的建模。树的若干定义都很简单,像父亲,儿子,根,兄弟,祖先,树叶,树枝,深度,高度等。在很多情况下,我们主要讨论二叉树(Binary Tree),也就是每一个节点最多只有两个子节点的情况。有一些比较特殊的二叉树值得讨论,比如:满二叉树:...原创 2018-03-17 21:06:54 · 221 阅读 · 0 评论 -
AVL树
AVL树是一种带有自平衡性质的的二叉查找树,也就是说,在多次插入删除或者极端数据情况下依然可以保证O(logn)的操作复杂度。文章同步发布在个人博客,链接:AVL树。自平衡的二叉查找树上一篇中的二叉查找树在多次插入删除后,树的节点会向其中一边下沉,操作(插入/删除/查找)的复杂度会从O(logn)渐渐增大。在数据量很大时,操作时间可能变得不可接受。而且当建树的一组数据是已经排好序的...原创 2018-03-24 13:01:48 · 268 阅读 · 2 评论 -
优先队列 & 堆
这里讨论堆。通常当我们谈论堆时,我们经常谈论的是二叉堆。但这并不是堆的全部。堆(heap),可以说是树(tree)的一种。参见下图:图中并不算十分完整,但也基本显示出的树的家族的轮廓。二叉树就不多说了。这次主要讨论二叉堆(binary heap)以及左偏树(leftist tree)。二叉堆是讨论过的(见基本数据结构–堆)。是看算法导论的时候写的(现在依然没有看完~)。那时没有实现优先队列...原创 2018-03-24 13:05:57 · 328 阅读 · 0 评论