Java 中二叉树的左视图

2025年9月2日 | 阅读 5 分钟

在本节中,我们将通过不同的方法学习 Java 中的二叉树左视图。在二叉树的左视图中,我们仅打印当从左侧查看二叉树时可见的所有节点。

例如,考虑下面的二叉树。

Left View of a Binary Tree in Java

上面二叉树的左视图是

注意:在二叉树的左视图中,节点显示在输出中的顺序无关紧要。唯一重要的是,所有从二叉树左侧可见的节点都应包含在输出中。

方法 1:使用递归

方法是使用递归来查找二叉树的左视图。可以向所有递归调用传递一个参数来查找节点的级别。每当我们遇到一个级别大于迄今找到的最大级别的节点时,我们就显示该节点。这是因为它是在此级别遇到的第一个节点。由于我们需要显示二叉树的左视图,因此我们必须以先访问左子树再访问右子树的方式进行遍历。

实施

让我们使用递归来实现二叉树左视图。以下代码的完成时间复杂度为 O(n),并且由于递归调用中使用的堆栈,程序的空间复杂度也为 O(n),其中 n 是二叉树中的节点总数。

文件名:LeftViewExample.java

输出

The following are the nodes present in the left view of the Binary Tree: 
20 22 25 14 7

方法 2:使用 Queue()

如果我们仔细观察,我们会发现二叉树的左视图是每个级别遇到的第一个节点。因此,我们可以使用队列数据结构来遍历二叉树的每个级别。在每个级别,我们只打印找到的第一个节点的值。

实施

让我们使用队列来实现二叉树左视图。下面程序的 time complexity 为 O(n),其中 n 是树中的节点总数。

文件名:LeftViewExample1.java

输出

The following are the nodes present in the left view of the Binary Tree: 
20 22 25 14 7