找到 346 篇文章 关于数据结构算法

数据结构中的二叉树遍历

Arnab Chakraborty
更新于 2019-08-27 11:23:47

929 次浏览

在本节中,我们将了解用于遍历二叉搜索树中存在的键的不同遍历算法。这些遍历包括中序遍历、先序遍历、后序遍历和层序遍历。假设我们有一棵这样的树:中序遍历序列将如下所示:5 8 10 15 16 20 23先序遍历序列将如下所示:10 5 8 16 15 20 23后序遍历序列将如下所示:8 5 15 23 20 16 10层序遍历序列将如下所示:10, 5, 16, 8, 15, 20, 23算法inorderTraverse(root):开始  如果根节点不存在... 阅读更多

数据结构中的二叉树及其属性

Arnab Chakraborty
更新于 2019-08-27 11:04:14

4K+ 次浏览

在本节中,我们将了解二叉树数据结构的一些重要属性。假设我们有一棵这样的二叉树。一些属性包括:第 'l' 层节点的最大数量为 $2^{l-1}$ 。这里,层级是指从根节点到该节点的路径上的节点数量,包括根节点本身。我们认为根节点的层级为 1。高度为 h 的二叉树中存在的节点的最大数量为 $2^{h}-1$ 。这里,高度是指从根节点到叶节点路径上的最大节点数量。这里,我们认为只有一个节点的树的高度为... 阅读更多

数据结构中的二叉树表示

Arnab Chakraborty
更新于 2019-08-27 10:47:48

15K+ 次浏览

在这里,我们将了解如何在计算机内存中表示二叉树。有两种不同的表示方法。分别是使用数组和使用链表。假设我们有一棵这样的树:数组表示通过使用层序方式扫描元素来存储树数据。因此,它按层存储节点。如果缺少某些元素,则会为其留出空白空间。上面这棵树的表示如下:12345678910111213141510516-81520-------23索引 1 存储根节点,它有两个子节点 5 和 16,它们分别位于位置 2 和 3。一些子节点是... 阅读更多

数据结构中数组的操作

Arnab Chakraborty
更新于 2019-08-27 10:38:25

689 次浏览

在这里,我们将了解数组数据结构的一些基本操作。这些操作包括:遍历插入删除搜索更新遍历是指扫描数组中的所有元素。插入操作是在数组的给定位置添加一些元素,删除是从数组中删除元素并在删除后更新其他元素的相应位置。搜索是在数组中查找存在的某个元素,更新是在给定位置更新元素的值。让我们来看一个 C++ 示例代码以更好地理解。示例 在线演示#include #include using namespace std; main(){  vector arr;  //插入元素... 阅读更多

数据结构中的均摊时间复杂度

Arnab Chakraborty
更新于 2019-08-27 09:15:10

898 次浏览

均摊分析当偶尔的操作非常慢,但大多数频繁执行的操作都更快时,使用这种分析。在数据结构中,散列表、不相交集等需要均摊分析。在散列表中,大多数情况下搜索时间复杂度为 O(1),但有时会执行 O(n) 操作。当我们想在散列表中搜索或插入元素时,在大多数情况下,它是常数时间完成任务,但当发生冲突时,需要 O(n) 次操作来解决冲突。聚合方法聚合方法用于... 阅读更多

矩阵乘法算法

Arnab Chakraborty
更新于 2019-08-27 08:14:18

22K+ 次浏览

在本节中,我们将了解如何将两个矩阵相乘。只有满足以下条件才能执行矩阵乘法。假设有两个矩阵 A 和 B,它们的维度分别是 A (m x n) 和 B (p x q),则当且仅当 n = p 时才能找到结果矩阵。那么结果矩阵 C 的阶数将为 (m x q)。算法matrixMultiply(A, B):假设 A 的维度为 (m x n),B 的维度为 (p x q)开始  如果 n 与 p 不相同,则退出  否则定义 C... 阅读更多

算法中的步数法

Arnab Chakraborty
更新于 2019-08-27 08:02:11

9K+ 次浏览

步数法是分析算法的一种方法。在这种方法中,我们计算一条指令执行的次数。由此,我们将尝试找出算法的复杂度。假设我们有一个执行顺序搜索的算法。假设每条指令需要 c1、c2、…… 的时间来执行,那么我们将尝试找出该算法的时间复杂度算法执行次数成本seqSearch(arr, n, key)i := 0while i < n, do  if arr[i] = key, then    break  end ifdonereturn i1n+1n0/11c1c2c3c4c5现在,如果我们将成本相加并乘以... 阅读更多

数据结构中队列的操作

Arnab Chakraborty
更新于 2019-08-27 07:51:59

587 次浏览

队列是一种先进先出数据结构。队列用于图遍历算法广度优先搜索等的不同领域。队列有一些基本操作。在这里,我们将了解队列的这些操作,并使用队列 ADT 看一个示例。ADT(抽象数据类型)是一种特殊类型的变量,其行为由一组值和一组操作定义。“抽象”一词的使用是因为我们可以使用这些变量,可以执行不同的操作。但是这些操作是如何工作的,对用户来说是完全隐藏的。ADT 由... 阅读更多

数据结构中的尾递归

Arnab Chakraborty
更新于 2019-08-27 07:45:44

4K+ 次浏览

在这里,我们将了解什么是尾递归。尾递归基本上是将递归函数用作函数的最后一个语句。因此,当从递归调用返回后没有其他操作需要执行时,这称为尾递归。我们将看到一个尾递归的示例。示例 在线演示#include using namespace std; void printN(int n){  if(n < 0){    return;  }  cout

数据结构栈基本操作

Arnab Chakraborty
更新于 2019-08-27 07:38:16

7K+ 次浏览

栈是一种后进先出数据结构。栈用于评估表达式、调用和递归策略等的不同领域。栈有一些基本操作。在这里,我们将了解栈的这些操作,并使用栈 ADT 看一个示例。ADT(抽象数据类型)是一种特殊类型的变量,其行为由一组值和一组操作定义。“抽象”一词的使用是因为我们可以使用这些变量,可以执行不同的操作。但是这些操作是如何工作的,对用户来说是完全隐藏的。ADT 由... 阅读更多

广告

© . All rights reserved.