随笔分类 - 数据结构py版
摘要:实数集w={2, 3, 7, 10, 4, 2, 5},构造一棵哈夫曼树 在(2)中,存在两个权值为4的树,可以选择其中任意一个与权值为3的树合并。不同选择会导致不同的哈夫曼树,但其外部路径的长度一定相等。 from trees.prioqueue import PrioQueue # 优先队列 (
阅读全文
摘要:from queue.queue import SQueue from sstack.stack import SStack class BinTNode: def __init__(self, data, left=None, right=None): self.data = data self.
阅读全文
摘要:def heap_sort(elems): """堆排序""" def siftdown(elems, e, begin, end): i, j = begin, begin * 2 + 1 while j < end: if j + 1 < end and elems[j + 1] < elems
阅读全文
摘要:连续表实现优先队列: """基于list实现优先队列""" class PrioQueueError(ValueError): pass class PrioQueue: """ 数据的存储位置按优先顺序排列 值较小的元素优先级更高 """ def __init__(self, elist=[]):
阅读全文
摘要:- 在非空二叉树第i层中至多有2^i个结点(i>=0) 第0层至多有一个根结点 - 高度为h的二叉树至多有(2^(h+1))-1个结点(h>=0) 高度为0只有一个根结点 - 对于任何非空二叉树T,如果其叶结点的个数n0,度数为2的结点个数为n2,那么n0=n2+1 叶结点(没有子结点的结点),度数
阅读全文
摘要:python的deque类: 迷宫的递归求解: 基于栈的回溯解决迷宫问题: 基于队列的迷宫求解算法: 从打印结果看,基于栈的搜索如果顺利,可能只探查不多的位置就找到出口,是一条路径; 基于队列的搜索是一种步步为营的搜索,只有在检查完所有与入口同样距离位置之后才更多前进一步 根据搜索过程的特点:把基于
阅读全文
摘要:阶乘函数的递归计算: 假定需要计算fact(3),其执行中将调用fact(2),进而调用fact(1)及fact(0) 计算过程中程序运行栈的变化情况,各小图中标着n一列的格子表示保存在栈的函数参数,fact表示调用fact的返回值,res表示本次函数调用的结果,显然res应=n*fact 非递归阶
阅读全文
摘要:后缀表达式的计算: 中缀表达式转换为后缀表达式:
阅读全文
摘要:from fib import fib # 参考01.线性表 def josephus_a(n, k, m): """ 约瑟夫环 没有人用0表示,n个人出列即结束 :param n: 包含n个人 :param k: 找到第k个人,从那里开始 :param m: 数m个人(在坐的),遇到表的末端就转回下标0继续,把表示第m个人的元素修改为0 :return: """ people = list(ra
阅读全文
摘要:顺序表 python中的list和tuple就采用了顺序表的实现技术 tuple是不变的表,因此不支持改变其内部状态的任何操作 list是一种元素个数可变的线性表,可以加入和删除元素,在各种操作中维持已有元素的顺序 list对象无法设置容量的操作 单链表: 补充单链表的排序: 带有尾节点引用的单链表
阅读全文
摘要:# 斐波那契数列第n项 # 1 1 2 3 5 8 def fib(n): if n <= 2: return 1 else: return fib(n-2)+fib(n-1) def fib2(n): if n < 3: return 1 f1 = f2 = 1 for k in range(1, ...
阅读全文