📜  门| GATE-CS-2006 |问题 8(1)

📅  最后修改于: 2023-12-03 15:28:43.060000             🧑  作者: Mango

问题 8

题目描述

编写一段程序,输入一棵二叉树(采用广义表表示),输出该二叉树的高度。

输入格式

输入字符串,采用广义表表示一棵二叉树,格式为:(node, left subtree, right subtree),其中 left subtree 或 right subtree 可以是 '.' 表示空。

输出格式

输出一个整数,表示该二叉树的高度。

解题思路

采用递归的方式,对二叉树进行遍历。

对于每个节点,分别遍历其左右子树,并取左右子树高度的较大值,再加上当前节点高度1,即为该节点的高度。

递归的终止条件为遍历到空节点,返回0。

代码实现
def height(root):
    if root is None:
        return 0
    else:
        left_height = height(root.left)
        right_height = height(root.right)
        return max(left_height, right_height) + 1
时间复杂度

遍历二叉树的每个节点,时间复杂度为O(n),其中n为节点数。

空间复杂度

根据递归深度,最坏情况下空间复杂度为O(n)。