摘要:
概念 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 百度 什么是带权路径? 首先权是每个节点的值,路径就是根节点到到下面层的路径 WPL = 阅读全文
摘要:
概念: 什么是BFS? BFS全称Breadth first search(广度优先遍历) 采用遍历树,按层遍历,辅助一个队列,用来存当前层级的节点 时间 $O(n)$ 代码实现 遍历树 class demo{ public: void bfs(TreeNode* root){ if(root==n 阅读全文
摘要:
title: 快速幂 date: 2022-10-05 17:31:57 概念: 快速幂降低了时间复杂度,将指数转换为二进制计算 $2^3$ ->$2^{2^1}\times2^{2^0}$ 时间复杂度 O(logN) 如果正常计算是for循环N次 代码实现 int fast_power(int a 阅读全文
摘要:
title: 快速乘 date: 2022-10-06 10:22:50 tags: 算法 概念 与快速幂差不多{% post_link 算法/快速幂 %} 都是通过转换二进制乘法 举例: 2x3 = 6 => $2^{\left(11\right)_2}=2^{2^1\times1}+2^{2^0 阅读全文
摘要:
概念: Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法 百度 只能实现非负数的距离 时间: $O(n^3)$ 感觉一般,但是简单,但是不建议用,还是优化的弗洛伊德时间少 代码实现 通过邻界矩阵实现 class Floyd{ public: //邻界矩阵 阅读全文