
二叉树
文章平均质量分 68
fengasdfgh
这个作者很懒,什么都没留下…
展开
-
哈夫曼树的应用:压缩文件
如果你还对哈夫曼树感到陌生的话,可以去看看这篇博客: http://blog.youkuaiyun.com/fengasdfgh/article/details/52907353思路: 压缩思路: 由于我们可以利用哈夫曼编码把文档中的每个字符表示为二进制编码. 比如文档里保存一个字符串“abbbcds”,我们可以通过统计每个字符出现的次数来构建哈夫曼树,这样每个字符有唯一的编码,如 a : 100, b原创 2016-11-02 21:58:21 · 811 阅读 · 0 评论 -
平衡二叉树-旋转
旋转分为左旋转与右旋转,左右旋转与右左旋转 我都在图片里表示: //右旋转,这里传入的为图中的b点 { Node *grandfather = father->_father; Node *great_father = grandfather->_father; grandfather->_left = father->_right;原创 2016-10-25 02:22:50 · 619 阅读 · 0 评论 -
平衡搜索树:AVLTree的实现
为什么使用AVLTree? 对于一般的搜索二叉树而言,在理想的状态下,寻找一个数的复杂度为o(lgn)(这个树为满二叉树),最坏为o(n),如下图所示: 所以我们需要限制它的左右高度,防止它出现不平衡状态。 AVL树的性质 1. 左子树和右子树的高度之差的绝对值不超过1 2. 树中的每个左子树和右子树都是AVL树 3. 每个节点都有一个平衡因子(我用br表示),任一节点的平衡因子是-原创 2016-10-25 01:21:50 · 408 阅读 · 0 评论 -
RBTree-红黑树的实现
如果你学习过了AVL树,那么RBTree你也会学的很快,如果你没有,你可以看看这篇博客: http://blog.youkuaiyun.com/fengasdfgh/article/details/52917527 AVL树是一个比较严格的平衡搜索二叉树,它搜索一个数的时间复杂度为o(lgN),然而维护它的代价却显的高昂。 相信大家都对AVL树的平衡因子感到烦躁,这就是红黑树出现的原因,它比AVL树更容易原创 2016-10-30 12:37:18 · 384 阅读 · 0 评论 -
二叉搜索树的迭代器
我们经常使用着我们并不熟悉的函数/类,我们只知道它们所提供的接口以及怎样使用。这就像我们开车在马路上,你可能并不知道汽车是如何运行,或许你会说这并不需要知道。但至少知道一些回在车抛锚的时候你能做一些事,而不是抽根烟无所事事等维修队过来(如果路上很挤,你就倒霉了)。 我们也有必要知道问题来源在程序出问题的时侯。 //////////////////////////////////////////原创 2016-11-15 23:12:15 · 1525 阅读 · 0 评论 -
平衡查找树之B树
浅谈算法和数据结构: 十 平衡查找树之B树 <div class="postBody"> <div id="cnblogs_post_body"><p>前面讲解了平衡查找树中的<a href="http://www.cnblogs.com/yangecnu/p/Introduce-2-3-Search-Tree.html" target="_转载 2016-11-13 09:08:53 · 221 阅读 · 0 评论 -
二叉树:找出2个节点的最近公共祖先(优化算法)
这道题的传统思路是想方法把根到两个点的路径分别保存在两个容器中,然后从后往前遍历容器找出相等的节点便为最近公共祖先。很容易计算出这是一个时间复杂度为o(n),空间复杂度为o(lgn)的算法。如果我们这时要求使用空间复杂度为o(1)的算法那?我们可以这样做: 假设2个节点为p1, p2。 我们遍历这颗树,如果发现这个节点为p1/p2或者这个 节点的子树中有p1/p2时,返回p1/p2。否则为NUL原创 2016-12-01 02:22:42 · 2789 阅读 · 1 评论