- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 Python 实现Prim最小生成树算法
最小生成树(MST):对于带权无向图所有的生成树中,代价最小的生成树称为图的最小生成树。Prim算法:假设N=(V,E) 是具有n个顶点的连通图,设U是最小生成树中顶点的集合,设TE是最小生成树中边的集合; 初始,U = { u1 } ,TE = { } , 重复执行: 在所有 u∈U,v∈V-U 的边 ( u , v...
2018-07-31 22:34:16 11802 9
原创 Python 最小堆实现Huffman树
Huffman树又称最优二叉树,是一类加权路径长度最短的二叉树。给出n个实数要求得到一个具有n个外部结点的扩充二叉树,该扩充二叉树的每个外部结点有一个与之对应,作为结点的权值,使得带权外部路径长度为最小,其中是从根到外部结点的路径长度。结论——权越大的叶结点离根越近;如果某个叶结点的权较小,可能就会离根较远。Huffman树的构建方法:(1) 根据给定的 n 个权值 构成 n 棵...
2018-07-29 18:54:45 1534 3
原创 Python 筛选法实现最大堆的构建、插入、删除算法
最大树(最小树):每个结点的值都大于(小于)或等于其子节点(如果有的话)的值的树。最大堆(最小堆):最大(最小)的完全二叉树向下调整法:对于某个结点i,将其与左右子结点中值较大的一个进行比较,如果i的值小于该子节点的值,则将两个结点交换位置;重复上述步骤,直到结点m不再小于左右子结点中值较大的那个或者结点m为叶子结点为止。向上调整法:对于某个结点i,将其与父节点进行比较,如果i的值大于...
2018-07-28 19:46:13 3122
原创 Python 实现二叉搜索树插入、查找、删除结点算法
二叉搜索树(Binary Search Tree),又称为“二叉排序树”、“二叉查找树”。定义为:该树的每个结点都有一个作为搜索依据的关键码。对任意结点而言,其左子树(如果存在)上的每个结点的关键码均小于该结点的关键码,其右子树(如果存在)上的所有结点的关键码都大于该结点的关键码。其中,根据二叉搜索树的定义,二叉树结点之间的关系可以通过结点间的位置关系来得到,常用的算法是分割式查找,查找结点的...
2018-07-26 23:49:37 4497
原创 Python 非递归实现前序中序、中序后序遍历还原二叉树
通过前序中序遍历非递归还原二叉树的原理是:在二叉树遍历中,前序遍历的次序是根左右,根据这个结论可以得出前序遍历中第一个结点一定是二叉树的根结点,再在中序遍历的结果中查询这个根结点,根结点左边的就是左子树,根结点右边的就是右子树,然后从前往后循环访问前序遍历,先还原结点的左子树,再还原结点的右子树,用栈数据结构保存构造左子树过程中访问过的节点,依次还原出二叉树。通过中序后序遍历非递归还原二叉树的...
2018-07-26 16:02:07 2277
原创 Python 实现二叉树四种遍历算法
遍历二叉树也就是按照某种次序,顺着制定的搜索路径访问二叉树中的各个结点,该过程中每个结点被且仅被访问一次。根据二叉树的结构特征,可以有两种搜索路径,广度优先遍历和深度优先遍历。形如:首先构造二叉树结点类'''二叉树结点''' class TreeNode: def __init__(self,val=None,left=None,right=None): ...
2018-07-25 11:22:20 4322 2
简易文本编辑器
2013-10-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人