#Get length of the longest path through recursion
def max_height(node):
if not node:
return 0
left = max_height(node.left) #Base Case based on my understanding
right = max_height(node.right) #Base Case based on my understanding
return max_height(left, right) + 1
我一直在调用max_height来获取长度,但我收到错误。我想到了三种可能性:
1)我误解了基本案例的概念,我实际上没有基本案例。
2)我没有正确地间隔Python代码。
3)我没有递归地获得BST的高度,而是树的宽度,这会影响以后的计算。
我知道它与这个问题类似,但主要区别在于我真的尝试使用递归,其他问题使用迭代并仅称为递归。 how to find the height of a node in binary tree recursively
答案 0 :(得分:2)
基本情况是递归停止的地方,你有一个:not node
(node == None
)
我没有看到间距问题...确保您只使用标签或仅使用空格
这确实产生了高度:沿着最长的根叶路径从根到叶的节点数。在每个节点级别,添加1
,然后按照更高的子树。
def max_height(node):
if not node: # this is the base case:
return 0 # where all recursive calls eventually stop
left = max_height(node.left) # <- these are the recursive calls:
right = max_height(node.right) # <- function x is called inside function x
return max(left, right) + 1 # max here, not max_height
请注意,对于您关联的问题,这仅仅是this answer的更详细版本。
答案 1 :(得分:0)
所有回答都是正确的,但在课堂上写作时我遇到的问题很少;
所以,代码是这样的,我希望这会有所帮助。
class Tree(object):
def height(self, root):
if root == None: #root == None
return 0
else:
return 1 + max(self.height(root->left), self.height(root->left))
t = Tree()
t.height(t)