
数据结构与算法
文章平均质量分 78
zsx0728
这个作者很懒,什么都没留下…
展开
-
数组旋转的3种方法
文章目录方法 1(使用临时数组)方法 2(逐一旋转)方法 3(杂耍算法)参考文档 编写一个函数 rotate(ar[], d, n) ,将大小为 n 的数组 arr[] 旋转 d 个元素。 将上述数组旋转2个元素,将生成数组:方法 1(使用临时数组) 输入 arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2, n =7将 d 元素存储到临时数组 temptemp[] = [1, 2]移动 arr[] 的其余部分arr[] = [3, 4, 5,翻译 2022-03-31 15:09:50 · 1414 阅读 · 0 评论 -
C++ sort() 函数的介绍并与C qsort() 的比较
文章目录sort() 介绍如何按降序排序?如何按特定顺序排序?qsort 和 sort() 的比较参考文档sort() 介绍 C++ STL提供了类似C语言中 qsort() 的函数排序,它对向量或数组进行排序,其中数组中的项是随机排列的。 sort() 函数通常需要两个参数,第一个参数是数组/向量开始排序的位置,第二个参数是我们希望数组/向量排序的长度。第三个参数是可选的,可以在我们想按字典顺序对元素排序的情况下使用。 默认情况下,sort() 函数按升序对元素进行排序。翻译 2021-07-07 15:10:18 · 434 阅读 · 0 评论 -
了解克鲁斯卡尔算法
文章目录Kruskal算法如何工作Kruskal算法的示例Kruskal算法伪代码C示例Kruskal算法 vs Prim算法Kruskal算法的复杂度Kruskal算法的应用参考文档 在本教程中,您将学习Kruskal算法如何工作。此外,您还将找到C语言的示例。 Kruskal算法是一种最小生成树算法,该算法将一个图作为输入并找到该图的边的子集,该子集形成一棵包含每个顶点的树在所有可以从图中形成的树中具有最小的权重之和Kruskal算法如何工作 它属于一类称为贪心算法的算翻译 2021-03-25 16:24:18 · 1905 阅读 · 0 评论 -
了解Dijkstra算法
文章目录Dijkstra算法的工作原理Dijkstra算法的示例Djikstra算法伪代码Dijkstra算法的代码Dijkstra算法的复杂度Dijkstra算法的应用参考文档 Dijkstra算法允许我们找到图的任意两个顶点之间的最短路径。 它不同于最小生成树,因为两个顶点之间的最短距离可能不包括图的所有顶点。Dijkstra算法的工作原理 Dijkstra的算法的工作原理是,顶点A和D间最短路径 A -> D 的某一段子路径 B -> D 也是顶点B和D之间的最短翻译 2021-03-23 16:20:47 · 292 阅读 · 0 评论 -
了解福特-福克森算法
在本教程中,您将学习什么是Ford-Fulkerson算法。此外,您还将找到在C语言的示例。Ford-Fulkerson算法是一种计算网络或图中最大流量的贪心方法。翻译 2021-03-23 10:16:03 · 6736 阅读 · 4 评论 -
了解贪心算法
文章目录可行解贪心算法示例贪心算法的应用参考文档 在本教程中,您将学习什么是贪心算法。此外,您还会找到一个贪心算法的示例。 贪心算法是一种通过选择当前可用的最佳选项来解决问题的方法,而不必考虑它未来会带来的结果。换句话说,通过局部最佳选择,旨在达到全局最佳选择。 这种算法可能不是所有问题的最佳选择。在某些情况下可能会产生错误的结果。 该算法采用自顶向下的方法。 该算法的主要优点是:该算法更易于描述。该算法的性能可能优于其他算法(但并非在所有情况下都如此)。可翻译 2021-03-22 10:25:31 · 134 阅读 · 0 评论 -
了解二分搜索
文章目录二分搜索如何工作?二分搜索伪代码C示例二分搜索复杂度二分搜索的应用参考文档 在本教程中,您将学习二分搜索排序的工作方式。此外,您还将找到C语言的示例。 二分搜索是一种搜索算法,用于在排序数组中查找元素的位置。 在这种方法中,总是在部分数组的中间搜索元素。 二分搜索只能在已排序的列表上实现。如果元素还没有排序,我们需要先对它们排序。二分搜索如何工作? 二分搜索算法可以通过以下两种方式实现。迭代法递归法 递归方法遵循分治方法。 下面讨论这翻译 2021-03-21 13:31:28 · 232 阅读 · 0 评论 -
了解线性搜索
文章目录线性搜索如何工作?线性搜索算法伪代码C示例线性搜索的复杂度线性搜索的应用参考文档 在本教程中,您将学习线性搜索。此外,您还将找到线性搜索C语言的示例。 线性搜索是最简单的搜索算法,可以按顺序搜索列表中的元素。我们从一端开始检查每个元素,直到找到所需的元素为止。线性搜索如何工作? 按照以下步骤在下面的列表中搜索元素k=1。从第一个元素开始,将k与元素x逐一比较。如果x == k,返回索引。否则,返回not found。线性搜索算法伪代码LinearSear翻译 2021-03-21 12:59:03 · 444 阅读 · 0 评论 -
了解希尔排序算法
在本教程中,您将学习希尔排序的工作方式。此外,您还将找到使用C语言的示例。希尔排序是一种算法,该算法首先对彼此分开的元素进行排序,然后依次缩短要排序的元素之间的间隔。它是插入排序的一个通用版本。在希尔排序中,按特定间隔对元素进行排序。元素之间的间隔根据使用的顺序逐渐减小。希尔排序的性能取决于给定输入数组使用的序列类型。使用的一些最佳序列是:希尔原始序列:N/2 , N/4 , …, 1Knuth增量:1, 4, 13, …, (3k – 1) / 2Sedgewick增量:1, 8, 23,翻译 2021-03-21 11:03:10 · 439 阅读 · 0 评论 -
了解堆排序算法
文章目录数组索引和树元素之间的关系什么是堆数据结构?如何“堆”出一棵树建立最大堆堆排序如何工作?C示例堆排序复杂度堆排序的应用参考文档 在本教程中,您将学习堆排序算法的工作原理。此外,您还将找到使用C语言的示例。 堆排序是计算机程序设计中一种流行而有效的排序算法。学习如何编写堆排序算法需要了解两种类型的数据结构-数组和树。 我们把要排序的初始数字集存储在一个数组中,例如 [10, 3, 76, 34, 23, 32],排序后,我们得到一个排序后的数组 [3,10,23,32,34,7翻译 2021-03-20 10:38:23 · 179 阅读 · 0 评论 -
了解桶排序算法
桶排序是一种排序技术,它首先将元素划分为几个称为桶的组,从而对元素进行排序。每个桶都可以分别使用合适自己的算法或递归调用相同的算法对桶内的元素进行排序。翻译 2021-03-18 13:49:54 · 140 阅读 · 0 评论 -
了解基数排序算法
文章目录基数排序如何工作?基数排序算法C示例复杂度基数排序应用参考文档 在本教程中,您将学习基数排序的工作方式。此外,您还将找到C语言的示例。 基数排序是一种排序技术,它首先将相同位置的各个数字分组,从而对元素进行排序。然后,根据元素的递增/递减顺序对元素进行排序。 假设我们有一个由8个元素组成的数组。首先,我们将根据个位的值对元素进行排序。然后,我们将根据十位的值对元素进行排序。这个过程一直持续到最后一个有效的数位。 初始数组为 [121、432、564、23、1、45、7翻译 2021-03-17 10:57:23 · 475 阅读 · 0 评论 -
了解计数排序算法
文章目录计数排序如何工作?计数排序算法伪代码C示例复杂度计数排序的应用参考文档 在本教程中,您将学习计数排序的工作原理。此外,您还将找到C语言的示例。 计数排序是一种排序算法,它通过计算数组中每个唯一元素的出现次数来对数组的元素进行排序。计数存储在辅助数组中,并通过将计数映射为辅助数组的索引来完成排序。计数排序如何工作?从给定数组中找出最大元素(设为max)。初始化一个数组,该数组长度为 max+1,所有元素为0。此数组用于存储给定数组中元素的计数。将每个元素的计数存储在计数数翻译 2021-03-16 15:03:05 · 200 阅读 · 0 评论 -
了解快速排序算法
在本教程中,您将学习快速排序的工作原理。另外,您还将找到使用C语言的示例。Quicksort是一种基于分治方法的算法,它将数组分割成子数组,并递归调用这些子数组对元素进行排序。QuickSort如何工作?从数组中选择轴心元素。可以从数组中选择任何元素作为轴心元素。在这里,我们把数组最右边(即最后一个元素)作为轴心元素。2. 小于轴心元素的元素放在左侧,大于轴心元素的元素放在右侧。通过以下步骤实现上述安排。a....翻译 2021-03-16 10:58:12 · 146 阅读 · 0 评论 -
了解合并排序算法
文章目录分治策略合并排序算法合并排序的合并步骤编写用于合并算法的代码Merge()函数逐步解释C示例合并排序复杂度合并排序应用参考文档 在本教程中,您将学习合并排序算法。此外,您还将找到C语言的合并排序示例。 合并排序是基于分治算法原理的最流行的排序算法之一。 在这里,一个问题被分为多个子问题。每个子问题都是单独解决的。最后,结合子问题形成最终的解决方案。分治策略 利用分治技术,我们把问题分成子问题。当每个子问题的解决方案准备就绪时,我们“组合”子问题的结果来解决主要问题翻译 2021-03-15 14:55:38 · 964 阅读 · 0 评论 -
了解插入排序算法
文章目录插入排序如何工作?插入排序算法伪代码C示例复杂度插入排序应用参考文档 在本教程中,您将学习插入排序的工作原理。此外,您还将找到使用C语言进行插入排序的示例。 插入排序的工作原理类似于我们在纸牌游戏中对手中的牌进行排序。 假设第一张卡片已经排序,然后选择一张未排序的卡片。如果未排序的卡大于手上的卡,则将其放置在右侧,否则放置在左侧。以同样的方式,将其他未分类的卡片取出并放在正确的位置。 插入排序也使用类似的方法。 插入排序是一种排序算法,它将未排序的元素放置在每翻译 2021-03-15 10:33:15 · 192 阅读 · 0 评论 -
冒泡排序和选择排序的不同
排序是计算机程序中的主要任务之一,数组的元素按特定顺序排列。排序使搜索更容易。冒泡排序和选择排序是排序算法,可以通过它们使用的排序方法加以区分。冒泡排序本质上是交换元素,而选择排序通过选择元素来执行排序。 二者的另一个显著区别是冒泡排序是一种稳定的算法,而选择排序是一种不稳定的算法。稳定的意思是,在列表或数组排序前后,具有相同值的记录以相同的顺序出现。一般来说,大多数稳定快速的算法都使用额外的内存。翻译 2021-03-14 14:29:15 · 10447 阅读 · 0 评论 -
了解选择排序算法
文章目录选择排序如何工作?选择排序算法的伪代码C示例复杂度参考文档 在本教程中,您将学习选择排序的工作方式。此外,您还将找到使用C进行选择排序的示例。 选择排序是一种算法,它在每次迭代中从未排序的列表中选择最小的元素,并将该元素放在未排序列表的开头。选择排序如何工作?将第一个元素设置为 minimum。将 minimum 与第二个元素进行比较。如果第二个元素小于 minimum,则将第二个元素指定为 minimum。比较 minimum 和第三个元素。同样,如果第三个元素较小,则翻译 2021-03-13 21:11:20 · 169 阅读 · 0 评论 -
了解冒泡排序算法
文章目录冒泡排序如何工作?冒泡排序算法C示例优化冒泡排序C示例复杂度冒泡排序应用参考文档 在本教程中,您将学习冒泡排序的工作原理。此外,您还将找到使用C语言进行冒泡排序的示例。 冒泡排序是一种比较相邻元素的算法,如果它们不符合预定的顺序,则交换它们的位置。顺序可以是升序或降序。冒泡排序如何工作?从第一个索引开始,比较第一个和第二个元素,如果第一个元素大于第二个元素,则将它们交换。现在,比较第二个和第三个元素。如果它们顺序不对,请交换它们。持续上面的过程直到最后一个元素。对于剩余翻译 2021-03-12 14:44:14 · 141 阅读 · 0 评论 -
了解贝尔曼·福特算法
文章目录为什么在现实生活中会有负权重的边?为什么我们要留意负权重?贝尔曼·福特算法如何工作贝尔曼·福特伪码Bellman Ford vs DijkstraC示例贝尔曼·福特算法的复杂度时间复杂度空间复杂度贝尔曼·福特算法应用参考文档 Bellman-Ford算法有助于我们找到加权图中从一个顶点到所有其他顶点的最短路径。 它与Dijkstra算法相似,但可用于边具有负权重的图。为什么在现实生活中会有负权重的边? 负权重边一开始似乎没用,但它们可以解释许多现象,如现金流、化学反应中释放翻译 2021-03-12 12:04:51 · 790 阅读 · 0 评论 -
了解BFS和DFS之间的区别
文章目录宽度优先搜索深度优先搜索BFS vs DFS什么是二叉树的BFS和DFS?在额外空间方面有什么区别吗?如何选择?参考文档宽度优先搜索 BFS代表Breadth First Search,是一种基于顶点的技术,用于在图中查找最短路径。它使用先进先出的队列数据结构。在BFS中,一次选中并标记一个顶点,然后其相邻顶点被访问并存储在队列中。它比DFS慢。 A / \ B C / / \ D E F 输出为:A,翻译 2021-03-11 17:37:24 · 4890 阅读 · 1 评论 -
了解广度优先搜索
文章目录BFS算法BFS示例BFS伪代码C示例BFS算法复杂度BFS算法应用参考文档 在本教程中,您将学习广度优先搜索算法。此外,您还将在C中找到BFS算法的示例。 遍历是指访问图的所有节点。广度优先遍历或广度优先搜索是一种递归算法,用于搜索图形或树数据结构的所有顶点。BFS算法 标准的BFS实现将图的每个顶点分为两类:访问过未访问过 该算法的目的是在避免循环的同时将每个顶点标记为已访问。 该算法的工作原理如下:首先将图的任意一个顶点放在队列的后面。将翻译 2021-03-11 10:09:11 · 140 阅读 · 0 评论 -
了解深度优先搜索(DFS)
https://www.programiz.com/dsa/graph-dfs在本教程中,您将通过示例和伪代码了解深度优先搜索算法。此外,您还将学习在C中实现DFS。深度优先搜索或深度优先遍历是一种递归算法,用于搜索图或树数据结构的所有顶点。遍历意味着访问图的所有节点。深度优先搜索算法标准的DFS实现将图的每个顶点分为两类:访问过未访问过该算法的目的是在避免循环的同时将每个顶点标记为已访问。DFS算法的工作原理如下:首先将图的任意一个顶点放在堆栈的顶部。获取堆栈的顶部数据项并将其添翻译 2021-03-10 18:56:14 · 287 阅读 · 0 评论 -
了解邻接表
文章目录邻接表表示法邻接表结构C示例参考文档 在本教程中,您将学习什么是邻接表。此外,您还将在C中找到邻接表的示例。 邻接列表将图表示为链表数组。 数组的索引表示一个顶点,其链接链表中的每个元素表示与该顶点形成边的其他顶点。邻接表表示法 图及其等价的邻接列表如下所示: 邻接列表在存储方面是有效的,因为我们只需要存储边的值。对于具有数百万个顶点和边的稀疏图,这意味着节省了大量空间。邻接表结构 最简单的邻接表需要一个存储顶点的节点数据结构和一个组织节点的图数翻译 2021-03-10 16:53:01 · 1481 阅读 · 0 评论 -
了解邻接矩阵
文章目录邻接矩阵表示法邻接矩阵示例邻接矩阵的优点邻接矩阵的缺点C示例邻接矩阵应用参考文档 在本教程中,您将学习什么是邻接矩阵。此外,您还将在C中找到邻接矩阵的示例。 邻接矩阵是将图G={V,E}表示为布尔矩阵的一种方法。邻接矩阵表示法 矩阵的大小是 VxV,其中 V 是图的顶点数,根据顶点 i 到顶点 j 是否有边,条目 Aij 的值为1或0。邻接矩阵示例 下图显示了一个图形及其等效的邻接矩阵。 对于无向图,由于每一条边(i,j)的存在,矩阵关于对角线对称,因此翻译 2021-03-10 14:54:06 · 4270 阅读 · 0 评论 -
了解生成树与最小生成树
文章目录生成树生成树示例最小生成树最小生成树示例生成树应用最小生成树应用参考文档 在本教程中,您将通过示例和图表了解生成树和最小生成树。 在学习生成树之前,我们需要了解两个图:无向图和连通图。 无向图是边不指向任何方向(即边是双向的)的图。 无向图 连通图是总是有从顶点到任何其它顶点的路径的图。 连通图生成树 生成树是一个无向连通图的子图,它包含了图的所有顶点和最小可能的边数。如果缺少一个顶点,则它不是生成树。 边可能有权重,也可能没有。翻译 2021-03-09 14:03:54 · 1943 阅读 · 0 评论 -
了解数据结构中的图
文章目录图术语图的表示图操作参考文档 在本教程中,您将学习什么是图。此外,您还将找到图的表示形式。 图数据结构是节点的集合,这些节点有数据并连接到其他节点。 让我们通过一个例子来理解这一点。在facebook上,所有事物都是一个节点。包括用户、照片、相册、事件、组、页面、评论、故事、视频、链接、注释……任何有数据的事物都是一个节点。 每个关系都是从一个节点到另一个节点的联结。无论你发布一张照片,加入一个小组,喜爱一个页面等等,都会为这些节点创建新的联结。 节点之间的翻译 2021-03-09 10:53:17 · 396 阅读 · 0 评论 -
了解红黑树的插入
插入红黑树在本教程中,您将学习如何将新节点插入到红黑树中。此外,您还将找到在C,C ++,Java和Python的红黑树上执行插入的工作示例。红黑树是一种自平衡二叉搜索树,其中每个节点都包含一个额外的位,用于表示该节点的颜色,红色还是黑色。阅读本文之前,请参阅有关红黑树的文章。插入新节点时,新节点始终作为RED节点插入。插入新节点后,如果树违反了红黑树的属性,则执行以下操作。重新着色回转...翻译 2021-03-07 19:56:06 · 232 阅读 · 0 评论 -
了解红黑树
文章目录红黑树上的操作旋转红黑树中的子树左旋转右旋转左右和右左旋转在红黑树中插入元素插入节点的算法插入后保持红黑属性的算法从红黑树中删除元素删除节点的算法在本教程中,您将了解什么是红黑树。此外,您还可以找到C语言的示例。红黑树是一种自平衡的二叉搜索树,其中每个节点都包含一个额外的位来表示该节点的颜色,红色或黑色。红黑树满足以下特性:红/黑属性:每个节点都有颜色,红色或黑色。根属性:根为黑色。叶子特性:每片叶子(NIL)都是黑色的。红色属性:如果红色节点有子节点,那么子节点总是黑色的。深度属翻译 2021-03-06 10:02:35 · 337 阅读 · 0 评论 -
了解B+树的删除
文章目录删除操作第一种情况第二种情况第三种情况C示例参考文档 在本教程中,您将了解有关B+树的删除操作。此外,您还将找到C语言的示例。 删除B+树上的元素包括三个主要事件:搜索要删除的键所在的节点、删除键和平衡树(如果有必要)。下溢是指节点中的键数少于其应持有的最小键数的情况。删除操作 在完成下面的步骤之前,必须了解关于m阶B+树的这些事实。一个节点最多可以有m个子节点。一个节点最多可以包含m-1个键。一个节点至少应有⌈m/2⌉个子节点。节点(根节点除外)至少应包含⌈m/翻译 2021-03-04 14:24:55 · 4895 阅读 · 1 评论 -
了解B+树的插入
文章目录1. 插入操作第一种情况第二种情况2. 插入图例3. C示例4. 插入复杂度参考文档 在本教程中,您将学习有关B+树上的插入操作的信息。此外,您还将找到在C语言中的示例。 将元素插入到B+树中包括三个主要事件:搜索适当的叶、插入元素和平衡/拆分树。 让我们了解下面这些事件。1. 插入操作 在将元素插入B+树之前,必须记住这些属性。根至少有两个子级。除根节点外,每个节点最多可以有m个子节点,至少可以有m/2个子节点。每个节点最多可包含m-1个键,最少可包含⌈m翻译 2021-03-04 10:28:53 · 4047 阅读 · 1 评论 -
了解B+树的搜索
文章目录1. B+树的性质2. B树与B+树的比较3. B+树的搜索步骤4. B+树的搜索图例5. C示例6. B+树应用参考文档 在本教程中,您将学习什么是B+树。此外,您还将找到在C语言的示例。 B+树是自平衡树的高级形式,其中所有值都存在于叶级。 在学习B+树之前需要了解的一个重要概念是多级索引。在多级索引中,索引的索引如下图所示创建。它使访问数据更容易和更快。1. B+树的性质所有的叶子都在同一级别。根至少有两个子级。除根节点外,每个节点最多可以有m个子节点,至少翻译 2021-03-04 09:22:15 · 1507 阅读 · 1 评论 -
了解B树的删除
文章目录1. 删除操作第一种情况第二种情况第三种情况2. C示例3. 删除复杂度参考文档 在本教程中,您将学习如何从B树中删除键。此外,您还可以找到C语言的示例。 删除B树上的元素包括三个主要事件:搜索要删除的键所在的节点、删除键和平衡树(如果需要)。 删除树时,可能会出现一种称为下溢的情况。当一个节点包含的键少于它应该持有的最小键数时,就会发生下溢。 在研究删除操作之前需要理解的术语是:中序前置节点左子节点上最大的键称为其中序前置。中序后置节点右子节点上的最小键称翻译 2021-03-03 15:57:32 · 8966 阅读 · 6 评论 -
了解B树的插入
文章目录1. 插入操作2. 插入过程图示3. 插入元素的算法4. C示例参考文档 在本教程中,您将学习如何将key插入B树。此外,您还可以找到C语言的示例。 在B树上插入元素包含两个事件:搜索适当的节点以插入元素,在需要的时候拆分节点。插入操作总是以自下而上的方式进行。 让我们了解下面这些事件。1. 插入操作如果树为空,则分配根节点并插入键。更新节点中允许的键数。搜索适当的节点以进行插入。如果节点已满,请执行以下步骤。按递增顺序插入元素。现在,有一些元素超出了其限制。翻译 2021-03-03 10:36:13 · 898 阅读 · 0 评论 -
了解B树的搜索
文章目录1. 为什么选择B树?2. B树属性3. 操作3.1 查找3.2 查找示例4. 搜索元素的算法5. C示例6. B树的搜索复杂度7. B树应用参考文档 在本教程中,您将学习什么是B树。此外,您还找到C语言中的示例。 B-树是一种特殊类型的自平衡搜索树,其中每个节点可以包含多个键,并且可以有两个以上的子节点。它是二叉搜索树的一种推广形式。 它也被称为高度平衡的m-way树。1. 为什么选择B树? 随着访问物理存储介质(如硬盘)所需时间的减少,对B-tree的需求也随翻译 2021-03-03 09:38:08 · 193 阅读 · 0 评论 -
简明易懂的算法文章-了解AVL树
文章目录1. 平衡因子2. AVL树的操作2.1 旋转AVL树中的子树2.1.1 左旋转2.1.2 右旋转2.1.3 左右和右左旋转2.2 插入新节点的算法2.3 删除节点的算法3. C示例4. AVL树上不同操作的复杂性5. AVL树应用参考文档 在本教程中,您将学习什么是avl树。此外,您还将找到在C上执行AVL树的示例。 AVL树是一种自平衡二叉搜索树,其中每个节点维护称为平衡因子的额外信息,其值为-1、0或+1。 AVL树以其发明者Georgy Adelson-Velsky和翻译 2021-03-02 17:13:03 · 233 阅读 · 0 评论 -
了解二叉搜索树
在本教程中,您将学习二进制搜索树的工作原理。此外,您还将找到C中二叉搜索树的示例。二叉搜索树是一种数据结构,它可以让我们快速地维护一个排序的数字列表。它被称为二叉树,因为每个树节点最多有两个子节点。...翻译 2021-03-02 12:43:14 · 144 阅读 · 0 评论 -
了解平衡二叉树
文章目录C示例平衡二叉树的应用参考文档 在本教程中,您将了解平衡的二叉树及其不同类型。此外,您还将在C中找到平衡二叉树的示例。 平衡二叉树,也称为高度平衡二叉树,是指任意节点左右子树的高度相差不超过1的二叉树。 以下是高度平衡二叉树的条件:任何节点的左子树和右子树之间的差异不超过一个左子树是平衡的右子树是平衡的C示例// Checking if a binary tree is height balanced in C#include <stdio.h&g翻译 2021-03-01 17:07:40 · 205 阅读 · 0 评论 -
了解完全二叉树
文章目录满二叉树 vs 完全二叉树如何创建完全二叉树?C示例数组索引与树元素的关系完全二叉树应用参考文档 在本教程中,您将学习完全二叉树及其不同类型。此外,您还将找到C语言的示例。 完全二叉树是一种二叉树,其中所有级别都已完全填充,但最低级别可能从左开始填充。 完全二叉树就像满二叉树,但有两个主要区别:所有叶元素必须向左倾斜。最后一个叶子元素可能没有正确的同级,即一个完全二叉树不一定是一个满二叉树。满二叉树 vs 完全二叉树如何创建完全二叉树?选择列表的第一个翻译 2021-03-01 16:23:01 · 1520 阅读 · 2 评论 -
了解完美二叉树
文章目录C示例完美二叉树定理参考文档 在本教程中,您将学习完美二叉树。此外,您还将找到C语言中完美二叉树的示例。 完美二叉树是一种二叉树,其中每个内部节点正好有两个子节点,所有叶节点处于同一级别。 所有内部节点的度数都是2。 完美二叉树可以被定义为:如果单一节点没有子节点,则它为高度h = 0 的完美二叉树。如果节点 h > 0,如果它的两个子树的高度都是 h-1 并且不重叠,那么它就是一个完美二叉树。C示例 以下代码用于检查是否是完美二叉树。/翻译 2021-03-01 13:53:27 · 542 阅读 · 0 评论