2016-03-03 291 views
0
class Node(object): 
    def __init__(self,value): 
     self.value=value 
     self.left=None 
     self.right=None 

class Tree(object): 
    def __init__(self,values): 
     length=len(values) 
     node=[] 
     for x in range(length): 
      node.append(Node(values[x])) 
     for x in range(length): 
      if 2*x+1 < length: 
       node[x].left = node[2*x+1] 
      if 2*x+2 < length: 
       node[x].right = node[2*x+2] 
     if node[0] != None: 
      self.root = node[0] 
     else: 
      self.root = None 

    def DFS(self,node,obj): 
     if node == None or node.value == obj: 
      return node 
     else: 
      self.DFS(node.left,obj) 
      self.DFS(node.right,obj) 

def main(): 
    obj = raw_input("Please input a number you want to search: ") 
    tree = Tree(range(100)) 
    node = tree.DFS(tree.root,obj) 
    if node.value == obj: 
     print "I've done it!" 

if __name__ == "__main__": 
    main() 

您好,我是新来的Python和这个平台。我想在我的python'Tree'类中实现DFS,但shell说'Tree'对象没有属性'DFS'。但是,我的代码中明确定义了DFS。谁能帮我这个?提前谢谢了!对象没有属性

回答

1

执行你的代码,我得到一个不同的错误信息:

if node.value == obj: 
AttributeError: 'NoneType' object has no attribute 'value' 

此错误消息是因为Tree.DFS()实际上并不总是返回任何明确(因此None返回),和None没有一个value属性。

+0

非常感谢您为您的即时回答!事实证明,这样的功能,DFS实际上并没有定义为类树的方法,我崇高的文本编辑器的缩进的设置是错误的。非常感谢您的帮助!顺便说一句,如何输入类似你的代码,在评论框中有灰色背景? –

+0

有通过SO的文档阅读: http://stackoverflow.com/help/formatting – acdr

1

我无法看到你的状态的问题。我得到这样的错误:

def DFS(self,node,obj): 
    if node == None or node.value == obj: 
     return node 

AttributeError: 'NoneType' object has no attribute 'value'

node == None它返回None,不能/不会有value属性。

+0

非常感谢您为您的即时回答!事实证明,这样的功能,DFS实际上并没有定义为类树的方法,我崇高的文本编辑器的缩进的设置是错误的。非常感谢您的帮助!顺便说一句,如何输入类似你的代码,在评论框中有灰色背景? –