0

我正在尝试实现一种递归方法来计算二叉树的高度。这是“高度”代码:

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   

我该如何解决这个问题?

4

2 回答 2

3

如果您在if块中设置变量的值并且稍后尝试使用它,请确保它在块之前声明,以便如果if没有发生,它仍然存在。

错误的:

if False:
    x = 3
print(x)
# UnboundLocalError

正确的:

x = 0
if False:
    x = 3
print(x)
# 0
于 2018-07-25T17:31:52.813 回答
0

您得到的是,UnboundLocalError因为值rheightandlheight不是在leftChildor rightChildare的情况下创建的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))
于 2018-07-25T17:56:01.943 回答