算法

树的遍历之后序遍历二叉树

1.简介依旧是下面的这三句话:先序遍历:根左右中序遍历:左根右后序遍历:左右根后序遍历就是在访问二叉树的结点的时候采用,先左,再右,再根的方式,对于一个最简单的访问而言如图,先访问左节点B,之后访问右结点C,最后访问根节点A,后序遍历的访问顺序就是BCA然而实际上的遍历访问并没有那么简单,

算法基础

1.算法的特性1)输入输出算法具有零个或者多个输入,同时,算法具有至少一个的输出。对于在屏幕上打印”HelloWorld”一样,你可以不需要有任何的输入,直接输出得到结果即可,而对于一个没有输出的算法,没有任何意义。2)确定性算法的每一步都具有确定的含义,无二义性。

递归算法概念与实例讲解

本篇主要是围绕着递归算法的概念、实质、思想以及设计要素四个方向叙述,同时通过实例讲解,促进大家对递归算法的理解。一、算法概念递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的调用。二、算法实质递归算法就是将原问题不断分解为规模缩小的子问题,然后递归调用方法来表示问题的解。

简述矩阵树定理

Kirchhoff矩阵树定理可以简称矩阵树定理,可以解决了一张图的生成树个数计数问题。本篇中的图,无论无向还是有向,都允许重边,但是不允许自环。一、概况1.无向图情况设G是一个有n个顶点的无向图。定义度数矩阵D(G)为:设为点i与点j相连的边数,

什么是计算几何?

一、计算几何的引入计算几何是几何学的一个重要分支,也是计算机科学的一个分支,研究解决几何问题的算法。在现代工程与数学、计算机图形学、机器人学、VLSI设计、计算机辅助设计等学科领域中,计算几何都有重要应用。计算几何问题的输入一般是关于一组几何物体(如点、线)的描述;输出常常是有关这些物体相关问题的回答

深入分析算法的复杂度

在系统分析算法的复杂度之前,我们先了解什么是算法?算法是指用来操作处理数据、解决程序问题的一组方法。但是对于同一个问题,我们去使用不同的算法,结果或许会一样,但不同的地方就在于你所用算法所耗费的资源和时间,这就是我们接下来学习算法的原因,不同的算法,产生的效率也不同,我们需要从中找出最合适的算法。

哈夫曼树编码与查找算法(C语言实现)

1.哈夫曼树的查找算法查找算法根据构建哈夫曼树算法衍生而来,我们在构建二叉树时需要查找出哪些数据最小,以符合我们哈夫曼树的最优解情况。查找权重值最小的两个结点的思想是:从待处理数据的头部位置开始,首先找到两个无父结点的结点(说明还未使用其构建成树),

概率DP实例讲解

在动态规划中,概率DP一般会用于研究有关于概率,步数,期望等问题。简单总结为以下四个点:(1)数学期望P=Σ每一种状态*对应的概率。(2)因为不可能枚举完所有的状态,有时也不可能枚举完,比如抛硬币,有可能一直是正面,etc。但是现在发现大多数题就是手动找公式或者DP推出即可,

字典树(trie)/前缀树(Prefix Tree)实例讲解

对于字典树/前缀树可能大部分情况很难直观或者有接触的体验,尤其是对前缀这个玩意没啥概念,可能做题遇到前缀问题也是使用暴力匹配蒙混过关,如果字符串比较少使用哈希表等结构可能也能蒙混过关,但如果字符串比较长、相同前缀较多那么使用字典树可以大大减少内存的使用和效率。

结合实例解析双向搜索

本篇将会结合实例解析双向搜索。一、双向搜索当给出了起点状态与终点状态时,使用普通的搜索从起点向下搜索,则效率会很低,搜索树会非常庞大;所以,可以使用双向搜索,及从起点与终点同时向中间搜索,搜索到同一个状态时,将从起点与终点搜索的值相加得到最终值的搜索;一般给出“始态”与“终态”时,