二叉树的左视图

2025年3月17日 | 阅读 3 分钟

二叉树的左视图是由各层最左边的节点组成的集合。

示例

输入

Left View of a Binary Tree

输出

4 5 3 6

方法 1:迭代实现

在迭代版本中执行树的层序遍历。为了保留当前层级的节点,我们可以改变层序遍历。如果当前节点是当前层级的第一个节点,则打印它。

方法 2:使用递归

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

程序

输出

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

在递归实现中也可以使用哈希。

我们也可以使用哈希来解决这个问题。计划是执行树的先序遍历,同时传递带有级别信息的函数参数。如果某个级别是第一次访问,则将当前节点和级别的信息添加到映射中。处理完每个节点后,导航映射并打印左视图。

程序

C++

Java

输出

对于以下输入

   1
 /  \
3    2

输出是:1 3

什么是层序遍历?

逐层遍历树的过程称为层序遍历。

我们可以使用先序遍历来查找二叉树的左视图吗?

是的,我们只需要跟踪节点的当前高度,如果我们第一次访问某个高度,我们将打印出该元素。

因此,二叉树的左视图既可以通过迭代方式也可以通过递归方式实现。