数据结构和算法
W170532934
God help those who help themselves!
展开
-
哈夫曼编码
哈夫曼编码1 简介1.1定义 哈夫曼树( Huffman )又称最优二叉树,是一类带权路径长度最短的树,有着广泛的应用。1.2加权路径长度 在讨论哈夫曼树之前首先需要弄清楚关于路径和路径长度的概念。树中两个结点之间的路径由一个结点到另一结点的分支构成。两结点之间的路径长度是路径上分支的数目。树的路径长度是从根结点到每一个结点的路径长度之和。原创 2011-12-16 10:21:36 · 3600 阅读 · 1 评论 -
二叉树
二叉树 在计算机科学中,二叉树是每个节点最多有两个子树的有序树。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树属于有序树,所以二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i − 1个结点;深度为k的原创 2011-12-20 22:47:43 · 1967 阅读 · 1 评论 -
线性时间右移数组
前不久看了位哥们参加百度实习生后发出的帖子,求一个算法能够使得一个数组右移k位,时间复杂度为O(n),空间复杂度为O(1)。 一开始想了好几天,感觉这个好纠结。只能用一个临时变量对这个数组进行右移。我一开始想法是:每次移动一个数据元素,然后进行多次移位。好像这样也是可行的,时间复杂度为O(k*n),虽然时间复杂度不是O(n),但是也不会高到哪去的。 这个问题一直困扰着原创 2012-05-13 13:31:01 · 1567 阅读 · 3 评论 -
有12个球,一个次品,有一个天平,称3次得出哪个是次品,怎样称?
上次去面试微软的实习生,面试的人问了我个问题。有12个球,一个次品,有一个天平,称3次得出哪个是次品,怎样称?当时,我就先犹豫了下。先问了他:次品不知道是轻还是重吗?他告诉我不知道。我就犯嘀咕了。这个怎么办。我一开始想了下,把12个球分成3份。想了一半了,可惜没有想到最后结果,最后只好放弃了。虽然早就有这样的问题了,但是自己孤陋寡闻啊,没有听说过。今天把这个答案给贴出来吧。告诫自己,一定要努力。转载 2012-05-14 15:07:53 · 7955 阅读 · 4 评论 -
平衡二叉树
平衡二叉树又称AVL树。它或者是颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有节点的平衡因子只可能为-1,0,1.只要二叉树上有一个节点的平衡因子的绝对值大于1,那么这颗平衡二叉树就失去了平衡。假设我们已经有棵平衡二叉树,现在让我们来原创 2012-05-16 09:47:25 · 27754 阅读 · 16 评论 -
KMP算法
KMP算法是一种高效的模式匹配算法,复杂度可以达到O(m+n),而普通模式匹配算法的复杂度为O(m*n)。普通模式匹配算法 从主串的第一个字符(或者给定的第pos个字符)开始和子串的第一个字符开始比较,若相等,则继续比较后面的字符。若不相等,则从主串本次开始比较的字符的下一个字符开始,与子串的第一个字符进行比较(即主串需要回退到本次比较开始字符的下一字符,模式串回退到首字符,主串原创 2013-05-20 10:27:50 · 770 阅读 · 0 评论