算法和数据结构
文章平均质量分 78
王炎林
这个作者很懒,什么都没留下…
展开
-
动态规划解决背包问题
利用动态规划求解背包问题 动态规划算法的思路如下: 动态规划算法通常用于求解具有某种最优性质的问题。其基本思路是将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。一般会用一个表来记录所有已解的子问题的答案。 这里要解决的背包问与用贪心算法实现的背包问题不同,这里是0-1背包问题。即,一个背包要么放在袋子中,要么不放在袋子中,不能够部分放入。原创 2012-10-29 21:02:16 · 818 阅读 · 0 评论 -
红黑树插入操作的C++实现
红黑树是具有如下顺序属性的二叉查找树 1、每个节点要么是红色,要么是黑色 2、根是黑色 3、所有叶子节点都是黑色(叶子是NIL节点) 4、每个红色节点的两个孩子节点都是黑色(从每个叶子到根的所有路径上不能有两个连续的红色节点) 5、从根节点到NIL指针的每条路径必须包含相同数目的黑色节点 对NIL节点的理解是它不包含数据只充当树在此结束的指示 红黑树的插入的时候,把新插入的节原创 2012-11-04 00:01:47 · 1212 阅读 · 0 评论 -
B-Tree的C++实现
简要说明下B树的性质。 用M表示B树的阶数,L表示叶子节点的最大元素个 (性质说明来自于《数据结构与问题求解(C++版)》第19章) 1、数据项保存在叶子中 2、非叶子节点具有M-1个键指导查找的进行;键i代表子树i+1中最小的键 3、根要么是叶子,要么就有2~M个孩子 4、所有非叶子节点,(根除外)都具有[M/2]~M个孩子 5、所有叶子都在同一深度,并且对某一叶子,具原创 2012-11-03 23:38:13 · 1496 阅读 · 0 评论 -
AVL树的C++实现
第一棵平衡二叉查找树又被称为AVL树,以它的发现者Adelson-Velskii和Landis命名的。 它广泛说明了平衡二叉查找树中使用的各种思想。就是具有附加平衡条件的二叉查找树。 任一平衡条件必须是易于维护,并确保树的深度是O(logN)。最简单的思想是要求左子树和 右子树具有同样的高度。但是这个要求太严格了,维持平衡的同时插入数据项太困难。 而AVL树在这方面找到了一个良好的折中点。原创 2012-11-04 21:06:22 · 1013 阅读 · 0 评论