📅  最后修改于: 2023-12-03 15:12:41.489000             🧑  作者: Mango
本题是2006年计算机科学的Gate考试的第85题,是一道关于二叉树的题目。
二叉树的高度定义为根节点到叶子节点的最长路径上的节点数。给定一棵二叉树,计算其高度。你可以假设二叉树至少有一个节点。
二叉树的每个节点都包含一个整数值。输入包含三行。第一行包含根节点的值,第二行包含左子树的值,第三行包含右子树的值。如果某个节点没有左子树或右子树,相应行为空。
输出一行,表示给定二叉树的高度。
输入:
1
2
3
4
5
输出:
3
要计算一棵二叉树的高度,我们可以使用递归的方法。因为二叉树的高度等于其左子树或右子树的高度加1。因此,我们可以递归地计算左子树和右子树的高度,然后取两者中的较大值,再加1即可。其中,空节点的高度为0。
下面给出一种可能的实现方式:
def height(root):
if not root:
return 0
return max(height(root.left), height(root.right)) + 1
上述代码首先判断当前节点是否为空。如果为空,返回0。否则,分别计算左子树和右子树的高度,取其较大值加1作为当前节点的高度。最后返回根节点的高度。