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

数据结构中的二叉树遍历

Arnab Chakraborty
更新于 2019年8月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算法中序遍历(根):开始 如果根节点不是……阅读更多

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

Arnab Chakraborty
更新于 2019年8月27日 11:04:14

4K+ 次查看

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

数据结构中的二叉树表示

Arnab Chakraborty
更新于 2019年8月27日 10:47:48

15K+ 次查看

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

数据结构中数组的操作

Arnab Chakraborty
更新于 2019年8月27日 10:38:25

689 次查看

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

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

Arnab Chakraborty
更新于 2019年8月27日 09:15:10

897 次查看

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

矩阵乘法算法

Arnab Chakraborty
更新于 2019年8月27日 08:14:18

22K+ 次查看

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

算法中的步数计数法

Arnab Chakraborty
更新于 2019年8月27日 08:02:11

9K+ 次查看

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

数据结构中队列的操作

Arnab Chakraborty
更新于 2019年8月27日 07:51:59

587 次查看

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

数据结构中的尾递归

Arnab Chakraborty
更新于 2019年8月27日 07:45:44

4K+ 次查看

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

数据结构栈基本操作

Arnab Chakraborty
更新于 2019年8月27日 07:38:16

7K+ 次查看

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

广告