我正在尝试实现一种递归方法来计算二叉树的高度。这是“高度”代码:
def HeightOfTree(self):
if self.root is None:
return 0
else:
ans=self._HeightOfTree(self.root)
return ans
def _HeightOfTree(self,currentNode):
if currentNode.hasleftChild():
lheight=1+self._HeightOfTree(currentNode.leftChild)
if currentNode.hasrightChild():
rheight=1+self._HeightOfTree(currentNode.rightChild)
if lheight > rheight:
return (lheight+1)
else:
return (rheight+1)
当我尝试调用该函数时,出现以下错误消息:
UnboundLocalError: local variable 'lheight' referenced before assignment
如何解决此问题?
答案 0 :(得分:3)
如果您要在if
块中设置变量的值,并在以后尝试使用它,请确保在该块之前声明了该变量的值,这样就不会发生if
,它仍然存在。
错误:
if False:
x = 3
print(x)
# UnboundLocalError
右:
x = 0
if False:
x = 3
print(x)
# 0
答案 1 :(得分:0)
您得到UnboundLocalError
是因为在rheight
或lheight
为leftChild
的情况下未创建值rightChild
和None
如果您定义了_HeightOfTree(None) == 0
的基本情况,则会更简单:
def _HeightOfTree(self,currentNode):
if currentNode is None:
return 0
return 1 + max(self._HeightOfTree(currentNode.leftChild), self._HeightOfTree(currentNode.rightChild))