繁体   English   中英

为什么下面的代码会抛出错误?

[英]Why is the following code throwing an error?

所以,我试图定义一个 function 来反转二叉树,当我运行下面的代码,然后执行a_node.binInversion()时,我收到错误消息,“NameError: name 'binInversion' is not defined ”。 为什么会发生这种错误?

我正在执行的代码如下:

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() function 很有可能无法按预期工作。 不要透露反转二叉树的解决方案,因为我想在查看解决方案之前自己试一试。

这里有一些错误:

  1. binInversion 不是 function,它是 class 方法,记得调用self.binInversion()而不是binInversion()
  2. 在上述修复之后,仍然会出现一个错误,说明 binInversion 给出了太多 arguments。 您的 binInversion 方法不需要 arguments,尝试使用def binInversion(self, node)之类的方法传入另一个参数或节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM