二叉树遍历算法(Binary Tree)
<p>二叉树遍历算法主要包括递归遍历方式、非递归遍历方式。而每一种方式又分为先序遍历、中序遍历、后序遍历。如果你的二叉树是二叉排序树,希望遍历出来的结果是有序的,那么无论是递归还是飞递归都需要使用中序遍历。另外,有时,我们也需要对二叉树进行层序遍历。假设二叉树结构如下: <img src="http://static.51tbox.com/stati...
51工具盒子
<p>二叉树遍历算法主要包括递归遍历方式、非递归遍历方式。而每一种方式又分为先序遍历、中序遍历、后序遍历。如果你的二叉树是二叉排序树,希望遍历出来的结果是有序的,那么无论是递归还是飞递归都需要使用中序遍历。另外,有时,我们也需要对二叉树进行层序遍历。假设二叉树结构如下: <img src="http://static.51tbox.com/stati...
<p>图的遍历和树的遍历类似,从图中某一顶点出发访问遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程叫做图的遍历。</p> <p>由于图中的任何顶点都可能和其余所有的顶点相邻接,极有可能沿着某条路径搜索后,又回到原顶点,而有些顶点可能还没有遍历到。因此,我们需要在遍历图的过程中把访问过的顶点打上标记,以免多次访问同一个顶点。具体办法是设置...
迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,它用于解决的是有向图中最短路径问题。Dijkstra 算法能够计算出给定起**【起始顶点】** 到【**其他所有顶点**】的最短路径。 1. 算法过程 {#title-0} ================== 我们通过一个例子来分析下 Dijkstra 算法是如何找到最短路径的,首先我们初始化 3 个数...
Floyd 算法(Floyd-Warshall algorithm)又称为弗洛伊德算法、插点法,用于在给定的加权图中计算两个顶点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。 Floyd 算法和 Dijkstra 算法对比话,Dijkstra 算法可以计算给定起始...
<p><strong>生成树</strong> :如果对于图 G 中任意两个顶点 vi,vj 都是连通的,则称G是<strong>连通图</strong>。生成树是对连通图而言的,是连同图的极小连通子图,包含图中的所有顶点,有且仅有n-1条边。</p> <p><strong>最小生成...
克鲁斯卡尔算法和普利姆算法一样,用于构建最小生成树。普利姆算法基本思想就是寻找每个顶点权值最小的边,而克鲁斯卡尔算法则是依据边来寻找权值最小的边。 1. 算法过程 {#title-0} ================== ,又译为哈夫曼编码、赫夫曼编码,是一种用于无损数据压缩的熵编码(权编码)算法。由大卫·霍夫曼在1952年发明。熵用于信息量度量,其本质是信息的平均编码长度,所以也叫熵编码。</p> <p>霍夫曼编码是依据霍夫曼树。其概念为:给定 N 个权值作为 N 个叶子结点,构造一棵二叉树,若该树的带权...
<p>DBSCAN (Density-Based Spatial Clustering of Applications with Noise)算法是一种基于密度的聚类算法,相比 Kmeans 算法,DBSCAN 可以有效处理噪声,并且能够发现任意形状的簇。</p> <p>DBSCAN 算法中有两个超参数:</p> <ol&g...
<p>ANNOY(Approximate Nearest Neighbors Oh Yeah)算法能够帮助我们高效的查找近邻的 N 个向量。其基本原理:就是将所有向量按照空间进行划分,直到子空间小于等于 K 个向量位置。如下图所示: <img src="http://static.51tbox.com/static/2024-11-13/col/e4...
WordPiece 也是一种子词构建算法,我们在中文语料中使用的 BertTokenizer 就是使用这种分词算法,从这一点来看,WordPiece 算法要比 BPE 算法更加适合中文语料的分词场景。 ``` class BertTokenizer(PreTrainedTokenizer): Construct a BERT tokenizer. Based on W...