摘要:
算法13 动态规划钢材裁剪 动态规划方法通常用来求解最优化问题。动态规划算法设计步骤: 1.刻画一个最优解的结构特征。 2.递归定义最优解的值。 3.计算最优解的值,通常采用自底向上的方法。 4.利用计算出的信息构造一个最优解。 文中给出了算法的伪代码,下面我们把递归,从顶到底,从底到顶的方法都实现 阅读全文
摘要:
算法12 约瑟夫环问题 1 首先我们来解决一个约瑟夫环的问题,再慢慢的深入。 问题描述: 罗马人攻占了桥塔帕克,41个人躲在一个山洞中,逃过了这场浩劫。这41人中,包括历史学家约瑟夫和他的一个朋友。剩余的39人为了表示不想屈服罗马人,决定集体自杀。大家想到了一个自杀方案,这41个人围城一个圆圈,由第 阅读全文
摘要:
算法11 红黑树的实现 阅读全文
摘要:
算法11 红黑树不带父结点指针的插入实现 阅读全文
摘要:
算法10 二叉搜索树之基数树 基数树是用来保存和排列字符串,关于字典序有两条规则: 算法导论中给出这样的图,我们结合图来看 1. 当字符串长度相同时,从左向右逐个字符比较,左边的比右边的小。如011 < 100。 2. 字符串长度不同时,长度长的在字典序中值更大。如100 < 1011。 因此,根结 阅读全文
摘要:
算法10 二叉搜索树存在重复数据插入的实现 当用TREE-INSERT将n个具有相同关键字的数据项插入到一棵初始为空的二叉查找树中时,该算法的渐近性能如何? 我们可以对TREE-INSERT做一些改进,即在第5行的前面测试key[z] = key[x],在第11行的前面测试key[z] = key[ 阅读全文
摘要:
算法10 二叉搜索树 搜索树数据结构支持许多动态集合操作,包括search,minimum,maximum,predecessor,successor,insert和delete等。 概念:二叉搜索树。对于任何节点x,其左子树中的关键字最大不超过x.key,其右子树中的关键字最小不低于x.key。其 阅读全文
摘要:
二叉树的遍历不用栈和递归 转自:ACM之家 http://www.acmerblog.com/inorder-tree-traversal-without-recursion-and-without-stack-5988.html 我们知道,在深度搜索遍历的过程中,之所以要用递归或者是用非递归的栈方 阅读全文
摘要:
在这里我们理一遍二叉树的递归和非递归遍历 一.前序遍历 前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。 1.递归实现 1 void preOrder1(BinTree *root) //递归前序遍历 2 { 3 if(root!=NULL) 4 { 5 cout<<root->data<<" 阅读全文
摘要:
算法9 完全二叉树 树结构的基本特征 (1)在一个树结构中,有且仅有一个节点没有直接前驱,这个节点就是树的根节点; (2)除了根节点外,其余结个节点有且仅有一个直接前驱; (3)每个结点都可以有任意多个直接后继; 树有一些基本的概念要清楚 父结点和子结点; 兄弟结点; 结点的度; 树的度; 叶结点; 阅读全文