📅  最后修改于: 2023-12-03 15:28:43.060000             🧑  作者: Mango
编写一段程序,输入一棵二叉树(采用广义表表示),输出该二叉树的高度。
输入字符串,采用广义表表示一棵二叉树,格式为:(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)。