📝 数据结构和算法

20661篇技术文档
  数据结构示例-判断所有叶节点是否处于同一级别

📅  最后修改于: 2020-10-15 06:17:00        🧑  作者: Mango

问:确定所有叶子是否处于同一级别的程序。说明在此程序中,我们需要检查给定二叉树的所有叶是否都处于同一级别。如果没有任何子节点,则称节点为叶。在下图中,节点4、5和6是叶节点,因为它们没有任何子节点。节点4、5和6处于同一级别,即级别2。算法定义具有三个属性的Node类,即:left和right数据。在此,左代表节点的左子节点,右代表节点的右子节点。创建节点时,数据将传递到该节点的data属性,并且...

  数据结构示例-判断两棵树是否相同

📅  最后修改于: 2020-10-15 06:18:18        🧑  作者: Mango

问:确定两棵树是否相同的程序。说明在此程序中,我们需要检查两棵树是否相同。为了使两棵树相同,它们必须满足两个条件:两棵树的结构应相同。一棵树中存在的节点应该出现在另一棵树中。上图包含三棵树,即A,B和C。树A和B相同,因为它们在结构上相同,并且所有节点的值都相同。但是,树A和C在结构上相同,但不相同,因为两个树中的节点都不同。算法定义具有三个属性的Node类,即:left和right数据。在此,左...

  数据结构示例-确定一棵二叉树的最大宽度

📅  最后修改于: 2020-10-15 06:19:39        🧑  作者: Mango

问:查找二叉树的最大宽度的程序说明在此程序中,我们需要找出二叉树的最大宽度。二叉树的宽度是任何级别中存在的节点数。因此,具有最大节点数的级别将是二叉树的最大宽度。要解决此问题,请逐级遍历树并计算每个级别中的节点。在给定的二叉树中级别1有一个节点,因此maxWidth =1。级别2有两个节点,因此maxWidth = 2为(2> 1)。级别3具有四个节点,因此maxWidth = 4为(4> 2)。...

  数据结构示例-查找在二叉树中最大的元素

📅  最后修改于: 2020-10-15 06:28:18        🧑  作者: Mango

问:程序以查找二叉树中的最大元素。说明在此程序中,我们将找出给定二叉树中的最大节点。我们首先定义将保存根数据的变量max。然后,我们遍历左侧的子树以找到最大的节点。将其与max进行比较,并将最大值2存储在变量max中。然后,我们遍历右侧子树以找到最大的节点,并将其与max进行比较。最后,max将具有最大的节点。上图表示一棵二叉树。最初,max将保持15。通过左子树递归。通过右子树递归。在35的左子...

  数据结构示例-查找树的最大深度或高度

📅  最后修改于: 2020-10-15 06:29:32        🧑  作者: Mango

问:查找一棵树的最大深度或高度的程序说明在此程序中,我们需要找出二叉树的最大高度。二叉树的高度可以定义为根与叶之间的节点数。最大高度将是根与最深叶之间的级别数。为了解决这个问题,我们遍历左子树并计算左子树的高度。同样,通过遍历右子树来计算其高度。最大高度将是左子树和右子树的高度中的最大值。在上面的二叉树中,左子树的高度为2。右子树的高度为4。MaxHeight = Max(leftHeight,r...

  数据结构示例-找到一棵二叉树中最大距离的节点

📅  最后修改于: 2020-10-15 06:31:39        🧑  作者: Mango

Q.程序以查找二叉树中最大距离的节点。说明在此程序中,我们需要找出二叉树中距离最大的节点。根据我们的方法,树的所有节点之间的所有距离将保持在可变距离内。通过使用变量MaxDistance可以保留具有最大值的距离。最初,MaxDistance初始化为distance的值。如果发现任何大于MaxDistance的值,则覆盖MaxDistance的值。重复此过程,直到找到树的两个节点之间的最大可能距离。...

  数据结构示例-在二叉树中找到最小的元素

📅  最后修改于: 2020-10-15 06:32:57        🧑  作者: Mango

问:程序以查找二叉树中的最小元素。说明在此程序中,我们将找出给定二叉树中的最小节点。我们首先定义变量min,它将保存根的数据。然后,我们遍历左子树以找到左子树中的最小节点。将其与最小值进行比较,并在变量min中存储最小值2。然后,我们遍历右子树以找到最小的节点,并将其与min进行比较。最后,min将具有最小的节点。上图表示一棵二叉树。最初,min将保持4。通过左子树递归。通过右子树递归。在3的右子...

  数据结构示例-查找一棵二叉树的所有节点的总和

📅  最后修改于: 2020-10-15 06:34:09        🧑  作者: Mango

Q.程序来查找二叉树的所有节点的总和说明在此程序中,我们需要计算二叉树中存在的节点总数。首先,我们将遍历左侧子树并计算左侧子树中存在的节点总数。同样,我们计算右子树中存在的节点总数,并通过添加根的数据来计算总数。对于给定的树,二叉树的节点总数为1 + 2 + 5 + 8 + 6 + 9 = 31。算法定义具有三个属性的Node类,即:左和右数据。在此,左代表节点的左子节点,右代表节点的右子节点。创...

  数据结构示例-用n键查找可能的二分搜索树的总数

📅  最后修改于: 2020-10-15 06:35:17        🧑  作者: Mango

问:程序以n键查找可能的二进制搜索树的总数。说明在此程序中,我们需要找出可以用n个值构造的二叉搜索树的总数。下图显示了一个可能的二进制搜索树,其键值为3。因此,我们总共可以构建五棵二进制搜索树。当我们选择节点1作为根节点时,我们得到两棵树。类似地,当我们选择3作为根节点时,一棵树以2为根节点,两棵树。此方法涉及递归选择一个节点作为根节点,并创建可能的二进制搜索树。一种简单的计算可能的二叉搜索树总数...

  数据结构示例-使用链表实现二叉树

📅  最后修改于: 2020-10-15 06:36:50        🧑  作者: Mango

问:使用链表实现二叉树的程序说明在此程序中,我们需要通过插入节点并按顺序显示节点来创建二叉树。典型的二叉树可以表示如下:在二叉树中,每个节点最多可以有两个孩子。每个节点可以有零个,一个或两个孩子。二进制树中的每个节点都包含以下信息:表示存储在节点中的值的数据。Left代表指向左孩子的指针。Right表示指向正确子项的指针。算法定义具有三个属性的Node类,即:left和right数据。在此,左代表...

  数据结构示例-在二叉树中搜索节点

📅  最后修改于: 2020-10-15 06:38:19        🧑  作者: Mango

问:程序搜索二叉树中的节点。树是非线性数据结构,用于分层存储数据。树是称为节点的元素的集合。节点通过边连接并包含数据。树的第一个节点称为根。每个节点可能有或没有子节点。没有任何子节点的节点称为叶子。二叉树是另一种树数据结构,其中每个节点最多可以有两个孩子。也就是说,二叉树中的每个节点都会有数据,即左子节点和右子节点。上图表示二叉树,其中1表示树的根节点。节点2的左子节点为4,节点3的左子节点为5,...

  计算不同元素数组中的三元组(i,j,k),以便a [i] <a [j]> a [k]和i <j <k

📅  最后修改于: 2021-04-17 08:12:51        🧑  作者: Mango

给定由N个不同整数组成的数组arr [],任务是计算数组arr []中可能的三元组(i,j,k)的数量,以使i <j <k并且arr [i] <arr [ j]> arr [k]。例子:Input:arr[] = {2, 3, 1, -1}Output:2Explanation:From the given array, all possible triplets satisfying the p...

  复理定理

📅  最后修改于: 2021-04-17 08:13:20        🧑  作者: Mango

括号定理用于图的DFS中。它指出深度优先搜索树中的后代具有有趣的属性。如果v是u的后代,则v的发现时间晚于u的发现时间。在图g =(V,E)的任何DFS遍历中,对于任意两个顶点u和v,以下任一正好成立:间隔[d [u],f [u]]和[d [v],f [v]]完全不相交,并且u和v都不是深度优先林中另一个的后代。间隔[d [u],f [u]]包含在间隔[d [v],f [v]]内,并且u是深度优先...

  二进制数组范围查询以找到两个零之间的最小距离

📅  最后修改于: 2021-04-17 08:13:55        🧑  作者: Mango

先决条件:段树给定一个仅由0和1组成的二进制数组arr []和由K个查询组成的2D数组Q [] [],任务是在以下范围内找到两个0之间的最小距离:每个查询{L,R}。例子:Input:arr[] = {1, 0, 0, 1}, Q[][] = {{0, 2}}Output:1Explanation:Clearly, in the range [0, 2], the first 0 lies at ...

  迭代段树(范围最小查询)

📅  最后修改于: 2021-04-17 08:14:47        🧑  作者: Mango

我们已经讨论了递归段树的实现。在这篇文章中,讨论了迭代实现。让我们考虑以下问题,了解细分树。我们有一个数组arr [0。 。 。 n-1]。我们应该能够1找到从索引l到r的最小元素,其中0 <= l <= r <= n-12将数组的指定元素的值更改为新值x。我们需要做arr [i] = x,其中0 <= i <= n-1。例子:段树的迭代版本主要使用以下事实:对于索引i,树中的左子节点= 2 * ...