1.概述

在本教程中,我们将讨论如何找到a的高度二叉树与一个例子。

2.定义

让我们首先从二叉树的高度的定义开始。

二进制树中的节点的高度是最大的边缘一条路径从叶节点到目标节点。如果目标节点没有连接到它的任何其他节点,则该节点的高度将是\ mathsf {0}。二叉树的高度是整个二叉树中的根节点的高度。换句话说,二进制树的高度等于从根到最遥远的叶节点的最大数量的边缘。

二叉树中的类似概念是树的深度。二进制树中的节点的深度是从根节点到目标节点的边缘的总数。类似地,二进制树的深度是从根节点到最遥远的叶节点的边缘的总数。

这里的一个重要观察是当我们计算整个二叉树的深度时,它相当于二叉树的高度。

例子

让我们拿一个二叉树:

首先,我们计算节点的高度C。因此,根据定义,节点的高度C是从叶节点到节点的路径中最大的边缘C。我们可以看到节点C,有两条路径:c \ lightarrow e \ lightarrow gc \ lightarrow f。这两条路径中最大的边缘是\ mathsf {2}。因此节点的高度C\ mathsf {2}

现在,让我们计算二叉树的高度。从根本中,我们可以有三个不同的路径,导致叶节点:a \ lightarrow c \ lightarrow fa \ lightarrow b \ lightarrow d, 和a \ lightarrow c \ lightarrow e \ lightarrow g。在这三条路径中,路径a \ lightarrow c \ lightarrow e \ lightarrow g包含最多的边缘\ mathsf {3}因此树的高度是\ mathbf {3}

接下来,我们想找到节点的深度B.。现在我们可以从根本看出,节点只有一条路径B.,它有一个边缘。因此,节点的深度B.\ mathsf {1}。二进制树的深度等于树的高度。因此,二叉树的深度是\ mathbf {3}

4.算法

现在我们知道二叉树高度的定义。让我们看看一个算法找到二进制树的高度:

QuickLatex.com呈现

我们通过将根节点作为输入来启动算法。接下来,我们计算左侧的左侧和右子节点的高度。如果根源没有任何子节点,我们将返回树的高度\ mathsf {0}

我们递归呼叫从根节点的左侧和右子树中的所有节点都计算二进制树的高度。最后,当我们计算左和右子树的高度时,我们将在两者之间取得最大高度并将其中添加一个。算法的数字返回将是二叉树的高度。

5.时间复杂性分析

在最佳情况下,我们只能在二叉树中只有一个节点。在这种情况下,我们只在root时执行算法的第一个条件空值并返回树的高度\ mathsf {0}在这里,时间复杂性是\ mathbf {\ mathcal {o}(1)}

通常,我们计算树中每个节点的高度。我们递归调用所有节点,计算从根节点的左侧和右子树的高度,最后返回整个二叉树的高度。因此,我们访问树中的所有节点。

让我们考虑二叉树中的节点数量是N所以,时间复杂性是\ mathbf {\ mathcal {o}(n)}

六,结论

在本教程中,我们讨论了如何计算二叉树的高度。我们介绍了递归算法和分析算法所需的时间复杂性。

来宾
0.注释
内联反馈
查看所有评论