【问题标题】:binary tree function not defined... in python二叉树函数未定义......在python中
【发布时间】:2022-09-23 13:47:33
【问题描述】:

我试图弄清楚如何在 python 中为二叉树编写代码,并且这个错误不断出现,因为没有定义某个函数。

class Node:
    def __init__(self , value):
        self.v = value
        self.right = None
        self.left = None
        
    def insert(self , value):
        if self.value:
            if value < self.value:
                if self.left is None:
                    self.left = Node(value)
                else:
                    self.left.insert(value)
            elif value > self.value:
                if self.right is None:
                    self.right = Node(value)
                else:
                    self.right.insert(value)
            else:
                self.value = value
#     def in_order_traversal(self):
        
#     def print(self):
#         self.in_order_traversal()
if __name__ == \'__main__\':
    r = Node
    r.Node(50)
    r.insert(30)
    r.insert(20)

这段代码给我的错误是 \"名称\'节点\'未定义\"

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Input In [16], in <cell line: 1>()
----> 1 class Node:
      2     def __init__(self , value):
      3         self.v = value

Input In [16], in Node()
     21 #     def in_order_traversal(self):
     22         
     23 #     def print(self):
     24 #         self.in_order_traversal()
     25     if __name__ == \'__main__\':
---> 26         r = Node
     27         r.Node(50)
     28         r.insert(30)

NameError: name \'Node\' is not defined

怎么了?我需要做什么?

  • 请包括完整的追溯错误。虽然我怀疑它在r.Node(50) 线上抱怨。 r = Node 和你 r.Node(50) 的目的是什么?
  • @ewokx 我编辑了带有回溯错误的问题
  • 你确定你的代码中有正确的缩进吗?在回溯中,if __name__ -- \'__main__\': 代码似乎被缩进以考虑在class Node 块内。

标签: python linked-list binary-tree


【解决方案1】:

R = Node 无效,使用 r = Node(value)

【讨论】:

  • 实际上,r = Node 是有效的语法;只是这并不是 OP 的意图。
【解决方案2】:

您犯的第一个错误是 Node 称它需要 1 个参数。第二个错误是将Node 中的值分配给self.v 而不是self.value

class Node:
    def __init__(self , value):
        self.value = value
        self.right = None
        self.left = None
        
    def insert(self , value):
        if self.value:
            if value < self.value:
                if self.left is None:
                    self.left = Node(value)
                else:
                    self.left.insert(value)
            elif value > self.value:
                if self.right is None:
                    self.right = Node(value)
                else:
                    self.right.insert(value)
            else:
                self.value = value
    # def in_order_traversal(self):
        
    # def print(self):
    #     self.in_order_traversal()
        
        
if __name__ == '__main__':
    r = Node(50)
    # r.Node(50)
    r.insert(30)
    r.insert(20)
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多