从目标节点开始烧毁二叉树17 Mar 2025 | 4 分钟阅读 什么是二叉树?二叉树是一种泛型树,其中一个节点最多可以有两个子节点。我们给出了一个二叉树和一个目标节点。我们必须从目标节点开始燃烧二叉树,并打印每个级别上燃烧的节点。 燃烧意味着在时间 = 0 时目标节点将被燃烧,然后其父节点和子节点将被燃烧。 例如 第 0 级:燃烧的节点是 5。 ![]() 第 1 级:燃烧的节点是 2 和 7。 ![]() 第 2 级:燃烧的节点是 1、4 和 9。 ![]() 第 3 级:燃烧的节点是 3。 ![]() 第 4 级:燃烧的节点是 6。 ![]() 第 5 级:燃烧的节点是 8。 ![]() 方法 1在这种方法中,我们的第一个任务是找到目标节点。所以我们会递归地搜索目标节点。找到目标节点后,我们将打印该节点,然后将它的左子节点和右子节点添加到队列中。 对于每个节点,我们将为其左子树和右子树调用递归函数。如果递归函数返回 1,则表示在该子树中找到了目标节点,然后我们将打印队列中的元素,然后打印当前节点。 在主函数中,在此递归调用之后,我们将通过检查队列大小来检查是否还有剩余节点。我们将打印队列中的元素。 Java 代码 输出 ![]() 时间复杂度:O(N),其中 N 是节点数。 空间复杂度:O(N) 用于队列。 方法 2第二种方法是将给定的二叉树转换为无向图。然后,在将树转换为图之后,我们将使用 BFS 方法来燃烧节点。 对于每个节点,我们都有它的子节点和父节点,所以我们将父节点和子节点转换为任何特定节点的邻居节点。 我们将使用队列数据结构来获得给定图的广度优先搜索。 我们将使用一个哈希表,其中键是节点,值是节点列表,该列表包含每个节点的邻居列表,我们可以以常量时间访问。 Java 代码 输出 ![]() 时间复杂度:O(N),其中 N 是节点数。 空间复杂度:O(N) 注意:此方法存在局限性。此方法会更改给定的数据结构,因此数据丢失和数据复杂性的可能性很高,因此不应首选此方法。下一主题二叉搜索树中的最低公共祖先 |
简介 循环列表也称为循环缓冲区或环形缓冲区,用于各种计算机科学和工程应用。这些类型的数据结构在需要高效内存管理和无缝数据循环的场景中表现最佳。在本文中,我们将了解循环列表的应用……
阅读 4 分钟
什么是笛卡尔树?笛卡尔树是一种从数据集创建的树形数据结构。笛卡尔树必须遵循以下一些结构变体。笛卡尔树必须遵守最小或最大堆属性。此属性……
阅读 3 分钟
在本教程中,我们将探讨如何确定满足给定方程的 P 和 Q 的值。一个大于 1 且其唯一因子是 1 和自身的整数被称为质数。一个可以被均匀分割的整数...
阅读 2 分钟
在本文中,我们将讨论如何在 C++ 中查找最长非递减子段的长度。假设我们有一个包含 n 个元素的数组 A。假设 Vimal 开始创建一个在线业务的计划,可能至少需要 n...
阅读 3 分钟
2-3 树 2-3 树与树相同,但它有一些不同的属性,例如任何节点可以有一个或两个值。因此,2-3 树中有两种类型的节点:单值节点 如果一个节点是单值的,那么它有两个……
阅读 4 分钟
堆栈是一种线性数据结构,它使用后进先出 (LIFO) 的概念。队列有两个端点,但堆栈只有一个(前和后)。它只有一个指针,即顶部指针,它指向堆栈的顶部成员。当一个元素...
阅读 8 分钟
在理解树的数据结构类型之前,让我们先理解什么是树作为数据结构。树可以定义为一种非线性数据结构,它以节点的形式存储数据,并且节点通过……相互连接。
阅读25分钟
引言:优先级队列是一种数据结构,它存储具有关联优先级的元素,并允许高效地检索具有最高(或最低)优先级的元素。虽然优先级队列有各种实现方法,但一种特别有趣且灵活的方法是使用双向……
7 分钟阅读
简介:在计算机科学和数学领域,栈排列是一个有趣的概念,对于许多不同的算法和数据结构至关重要。栈是遵循后进先出 (LIFO) 原则的基本数据结构。在置换中使用栈置换,是...
阅读 4 分钟
线段树在竞争性编程和算法问题解决中是一项重要的数据结构。在这篇详尽的讲解中,我们将深入探讨线段树,特别关注范围最大查询 (RMQ) 和节点更新过程。这些过程能够快速地查询和更新特定范围内的...数据。
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India