Vertical Tree Traversal in Java2025 年 5 月 9 日 | 阅读 9 分钟 Java 垂直树遍历涉及根据二叉树节点与根的水平距离,逐列地组织和打印节点。通过使用 TreeMap 和层序遍历,节点被分组并按垂直顺序显示,确保树的结构化视图。 输入 具有以下结构的二叉树 输出 [4] [2] [1, 5, 6] [3] [7] 解释 节点按其水平距离 (HD) 分组
暴力破解法该方法按水平距离对节点进行分组,并逐层处理它们,以确保二叉树的结构化垂直顺序遍历。 算法步骤 1: 创建一个 TreeMap 来存储每个水平距离 (HD) 的节点。 步骤 2: 从根开始,将其添加到队列中,HD = 0。 步骤 3: 处理每个节点
步骤 4: 重复此过程,直到所有节点都被处理(队列为空)。 步骤 5: 通过按 HD 顺序从 TreeMap 中读取值来打印结果。 实施输出 [4] [2] [1, 5, 6] [3] [7] 时间复杂度: O(N log N),其中 N 是节点数(由于 TreeMap 插入)。 空间复杂度: O(N),用于 TreeMap 和队列。 使用二叉树方法该方法使用层序遍历和队列,根据节点与根的水平距离 (HD) 来分组节点。TreeMap 以排序方式存储每个 HD 的节点,确保了垂直对齐。 算法步骤 1: 初始化一个 TreeMap 用于按水平距离 (HD) 存储节点,并初始化一个队列用于层序遍历。添加根节点,HD = 0。 步骤 2: 从队列中处理每个节点,将其值添加到其 HD 下方的 TreeMap 中。 步骤 3: 如果存在,将左子节点添加到队列中,HD 减 1;将右子节点添加到队列中,HD 加 1。 步骤 4: 重复此过程,直到队列为空。 步骤 5: 从 TreeMap 中打印按 HD 分组的节点。 实施输出 Vertical Traversal of the Binary Tree: [4] [2] [1, 5, 6] [3] [7] 时间复杂度: O(N log N) 空间复杂度: O(N) 使用 HashMap 方法该代码使用 HashMap 来根据节点与根的水平距离 (HD) 对节点进行分组。层序遍历可确保系统地访问节点,并且键 (HD) 被排序以实现有序垂直遍历。 算法步骤 1: 如果根节点为空,则从函数返回。 步骤 2: 创建一个 HashMap 来存储按水平距离 (HD) 分组的节点。 步骤 3: 使用队列处理节点,并添加其左子节点和右子节点,并更新 HD 值。 步骤 4: 从 HashMap 中提取键 (HD),并按升序对其进行排序。 步骤 5: 对于每个排序后的 HD,打印存储在 HashMap 中的节点。 实施输出 Vertical Traversal of the Binary Tree: [4] [2] [1, 5, 6] [3] [7] |
数据访问对象模式,通常称为 DAO 模式,用于将高层业务服务与低层数据访问 API 或操作分开。数据访问对象模式的成员列于下文。数据访问对象接口:数据访问对象接口指定了……
阅读 3 分钟
在 Java 中,日期在计算日期差异方面起着非常重要的作用。在设计应用程序时,日期可以是加入组织、入学日期、约会日期等。很多时候我们需要计算两个日期之间的差异。可能有一个以上的...
阅读9分钟
在 Java 中,Callable 和 Future 是与线程一起使用的两个最重要的概念。在本节中,我们将了解如何在代码中使用 Callable 和 Future。Future 用于存储从不同线程接收到的结果,而 Callable 是...
阅读9分钟
? 在 Java 中,字符串分割是一项重要且常用的操作。Java 提供了多种分割字符串的方法。但最常见的方法是使用 String 类的 split() 方法。在本节中,我们将学习如何分割一个...
阅读9分钟
java.nio.CharBuffer 包含 hasArray() 函数。CharBuffer 类用于检查提供的缓冲区是否由可访问的 char 数组支持。如果此缓冲区具有可访问的后备数组,则返回 true;否则返回 false。array() 和 arrayOffset() 方法可以...
阅读 3 分钟
一次性密码 (OTP) 被广泛用于保护在线交易和访问各种资源。一次性密码生成器是一种设备或软件应用程序,它生成一个仅对单个登录会话或交易有效的唯一代码。本文将教我们如何实现...
7 分钟阅读
Java 5 中引入的泛型为开发人员编写和使用 Java 集合的方式带来了革命性的变化。泛型允许类和方法对各种类型的对象进行操作,同时提供编译时类型安全。这一强大功能具有许多优点,有助于编写更清晰、更...
阅读 4 分钟
Java 7 中对数值表示的增强支持包括引入了二进制字面量。以二进制(0 和 1)表示的数字称为二进制字面量。二进制字面量可用于 Java 中的字节、短整型、整型和长整型等整数类型……
5 分钟阅读
一组用于有效管理工作线程的组件的框架称为执行器框架。执行器 API 通过执行器将任务的执行与要执行的实际任务分离。执行器框架是一个实现...
阅读 8 分钟
回文在计算机科学和字符串处理问题中至关重要。回文是指从前到后读都相同的字符序列。这个问题是对经典回文检查的扩展,但有一个有趣的转折:不是检查我们拥有的单个字符串...
11 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India