二叉树的顶视图2024年8月28日 | 阅读 4 分钟 二叉树二叉树是一种非线性数据结构,其中每个父节点最多有两个子节点。 二叉树中的每个节点除了数据元素外,还包含左子节点和右子节点的引用。树形结构顶端的节点称为根节点。包含其他子节点的节点称为父节点。 父节点的两个子节点称为左子节点和右子节点。哈希、数据压缩、网络流量路由、二叉堆的建立和二叉搜索树的构建等都使用了二叉树。 顶部视图二叉树中的节点相互连接,使得每个节点最多可以有两个子节点。 从上方俯视时可以看到的节点就是顶部视图节点。为了打印二叉树的顶部视图,我们可以按任何顺序打印节点。 二叉树的顶部视图是指从顶部观察树时可以看到的节点集合。对于下图所示的树 示例4 2 1 3 7 将会出现在顶部。因此,顶部视图将是:4 2 1 3 7。 方法策略是使用前序遍历遍历树,检查当前垂直级别是否已被访问,如果已被访问,则查找更小的水平级别节点并存储。如果未被访问,则可以直接更新已访问的垂直级别并存储当前节点的节点和水平级别。 由于映射将显示节点相对于根节点的水平距离,因此我们可以使用它来确定是否已经达到水平级别。其中键代表水平距离,值是每个节点的数值和级别组成的对。 将使用前序遍历来导航树。 每次我们确定当前水平距离的级别是否小于先前观察到的最高级别时,都会更新此水平距离的值和级别。 为了获得垂直级别,我们必须将左子节点的级别传递为 1,将右子节点的级别传递为 level + 1。 在映射中打印存在的值。 C++ 程序Input: 1 / \ 2 3 Output: 2 1 3 Java 程序 输出 Input: 1 / \ 2 3 Output: 2 1 3 Python 程序 输出 Input: 1 / \ 2 3 Output: 2 1 3 时间复杂度:O(N),其中 N 是数组的大小,是时间复杂度。 空间复杂度:O(1) 如何找到树的顶部视图?为了在递归查找的同时存储每个节点与根节点之间的水平距离,我们必须首先识别从顶部可见的节点。 树的顶部视图由从顶部观察树时可以看到的节点组成。 下一个主题二叉树的类型 |
问题描述给定一个长度为 n 的 0 索引整数数组 nums 和一个整数 k,返回满足以下条件的对 (i, j) 的数量:0 <= i < j <= n - 1 且 nums[i] * nums[j] 可被 k 整除。Java 方法 1 频率计数 import java.util.Arrays; import java.util.HashMap; import...
阅读 6 分钟
引言 在使用多个堆栈进行编程时,有效管理和利用内存的能力至关重要。在本文中,我们将探讨如何在单个数组中实现 K 个堆栈,确保内存使用最少并尽可能快地执行操作……
5 分钟阅读
“一个”堆和“那个”堆之间有什么关系? 堆(数据结构):“堆”通常指的是一种称为堆的数据结构(通常是基于树的结构)。堆主要有两种类型:二叉堆和二项堆。二叉堆:二叉堆是二叉...
阅读 10 分钟
问题陈述:给定一个大小为 n 的数组,您需要确定数组中的元素是否可以用来构建一个具有 n 个级别的二叉搜索树(BST)。构造遵循特定的规则来排列树中的元素。让我们...
阅读 10 分钟
重复子树通常指大型数据结构中的相同子树。在二叉树中发现重复子树可以在各种领域(如数据压缩、遗传学等)提供非常有价值的见解。在本文中,我们将...
阅读 4 分钟
简介 队列是计算机科学和日常应用中广泛使用的数据结构。要交错队列的前半部分和后半部分,请重新组织队列的项,使其前半部分和后半部分交替出现。例如:假设我们有一个队列,最初包含整数 1, 2, 3, 4,...
阅读 8 分钟
链表是计算机科学和编程面试中的基本数据结构。它们提供了存储和访问顺序数据的有效方法。链表的一个关键挑战是有效地对其元素进行排序。与数组不同,链表仅提供对节点的顺序访问。我们无法...
7 分钟阅读
本文将解释约瑟夫问题的概念;介绍如何使用 C 语言的循环链表来解决它,并详细解释代码。引言 约瑟夫问题是一个著名的理论问题,自...以来一直存在。
5 分钟阅读
简介从给定节点开始燃烧二叉树是计算机科学中一个迷人的问题,经常在算法面试和编程竞赛中遇到。这项任务包括从给定的节点开始,在整个二叉树中模拟火势蔓延,并确定它...
阅读 4 分钟
引言:在图论领域,寻找给定图的最小生成树 (MST) 是一个常见问题,具有广泛的应用。MST 用于各种领域,例如网络设计、聚类和优化。解决此问题的两个流行算法是 Prim 算法和...
阅读 12 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India