为什么下面的代码会抛出错误?
Why is the following code throwing an error?
所以,我试图定义一个函数来反转二叉树,当我 运行 下面的代码,然后执行 a_node.binInversion()
时,我得到的错误是,“ NameError:名称 'binInversion' 未定义”。为什么会出现该错误?
我正在执行的代码如下:
class BinaryTree:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def insert_left(self, value):
if self.left == None:
self.left = BinaryTree(value)
else:
new_node = BinaryTree(value)
new_node.left = self.left
self.left = new_node
def insert_right(self, value):
if self.right == None:
self.right = BinaryTree(value)
else:
new_node = BinaryTree(value)
new_node.right = self.right
self.right = new_node
def binInversion(self):
if self.left is None and self.right is None:
return 0
else:
binInversion(self.left)
binInversion(self.right)
self.left, self.right = self.right, self.left
a_node = BinaryTree('a')
a_node.insert_left('b')
a_node.insert_right('c')
b_node = a_node.left
b_node.insert_right('d')
c_node = a_node.right
c_node.insert_left('e')
c_node.insert_right('f')
d_node = b_node.right
e_node = c_node.left
f_node = c_node.right
a_node.binInversion()
此外,我知道 binInversion()
功能很有可能无法按预期工作。请不要公开反转二叉树的解决方案,因为在查看解决方案之前我想自己试一试。
这里有一些错误:
- binInversion不是一个函数,它是一个class方法,记得调用
self.binInversion()
而不是binInversion()
- 在上述修复之后,仍然会出现一个错误,提示类似 binInversion was given too many arguments 的内容。您的 binInversion 方法不带参数,请尝试使用
def binInversion(self, node)
之类的方法传入另一个参数或节点。
所以,我试图定义一个函数来反转二叉树,当我 运行 下面的代码,然后执行 a_node.binInversion()
时,我得到的错误是,“ NameError:名称 'binInversion' 未定义”。为什么会出现该错误?
我正在执行的代码如下:
class BinaryTree:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def insert_left(self, value):
if self.left == None:
self.left = BinaryTree(value)
else:
new_node = BinaryTree(value)
new_node.left = self.left
self.left = new_node
def insert_right(self, value):
if self.right == None:
self.right = BinaryTree(value)
else:
new_node = BinaryTree(value)
new_node.right = self.right
self.right = new_node
def binInversion(self):
if self.left is None and self.right is None:
return 0
else:
binInversion(self.left)
binInversion(self.right)
self.left, self.right = self.right, self.left
a_node = BinaryTree('a')
a_node.insert_left('b')
a_node.insert_right('c')
b_node = a_node.left
b_node.insert_right('d')
c_node = a_node.right
c_node.insert_left('e')
c_node.insert_right('f')
d_node = b_node.right
e_node = c_node.left
f_node = c_node.right
a_node.binInversion()
此外,我知道 binInversion()
功能很有可能无法按预期工作。请不要公开反转二叉树的解决方案,因为在查看解决方案之前我想自己试一试。
这里有一些错误:
- binInversion不是一个函数,它是一个class方法,记得调用
self.binInversion()
而不是binInversion()
- 在上述修复之后,仍然会出现一个错误,提示类似 binInversion was given too many arguments 的内容。您的 binInversion 方法不带参数,请尝试使用
def binInversion(self, node)
之类的方法传入另一个参数或节点。