
数据结构
法哥2012
QQ:2533740151
展开
-
平衡二叉树
平衡二叉树一、简介1.1定义平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类原创 2014-06-05 23:37:09 · 1837 阅读 · 0 评论 -
哈夫曼编码
哈夫曼编码一、简介1.1定义哈夫曼编码(Huffman Coding)是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码(有时也称为霍夫曼编码)。1.2应用哈夫曼树─即最优二叉树,带权路径长度最小的二叉树,经常应用于数据原创 2014-06-04 23:22:34 · 6134 阅读 · 0 评论 -
二叉树的各种遍历算法以及实例
一、二叉树在计算机科学中,树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构。二叉树是每个节点最多有两个子树的有序树。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。值得注意的是,二叉树不是树的特殊情形。在图论中,二叉树是一个连通的无环图,并且每一个顶点的度不大于3原创 2014-05-25 23:36:59 · 56575 阅读 · 3 评论 -
C++链表的创建与操作
数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的位置和距离都是固定的,也就是说,任何一个数组元素的地址都可一个简单的公式计算出来,因此这种结构可以有效的对数组元素进行随机访问。但若对数组元素进行插入和删除操作,则会引起大量数据的移动,从而使简单的数据处理变得非常复杂,低效。为了能有效地解决这些问题,一种称为“链表”的数据结构得到了广泛应用。1. 链表概述原创 2014-05-26 23:32:39 · 3213 阅读 · 0 评论 -
8大排序算法图文讲解
本文介绍了常见的8大排序算法动态实现过程。转载 2016-07-23 18:56:44 · 441 阅读 · 0 评论 -
归并排序
归并排序用到了分治策略。用分治策略解决问题分为三步:分解、解决、合并。也即:将原问题划分成n个规模较小而结构与原问题相似的子问题; 递归地解决这些子问题,然后再合并其结果,得到原问题的解。原创 2016-07-23 21:18:14 · 352 阅读 · 0 评论 -
快速排序
快速排序的基本思路快速排序是基于分治模式处理的,对一个典型子数组A[p...r]排序的分治过程为三个步骤:1.分解:A[p..r]被划分为俩个(可能空)的子数组A[p ..q-1]和A[q+1 ..r],使得A[p ..q-1] 2.解决:通过递归调用快速排序,对子数组A[p ..q-1]和A[q+1 ..r]排序。3.合并。原创 2016-07-24 22:41:21 · 319 阅读 · 0 评论 -
堆排序
1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i]2.堆排序的思想利用大顶堆(小顶堆)堆顶记录的是最原创 2016-08-11 22:19:27 · 1096 阅读 · 0 评论