回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>很抱歉,我在python程序中遇到了akward问题。首先我是这里的新手,我是一个中国学生。请原谅我的英语不好。我会尽力把问题说清楚。你知道吗</p>
<p>错误代码如下:</p>
<pre><code> def __find__(self,node,value):
if value<node.v:
self.__find__(node.l,value)
elif value>node.v:
self.__find__(node.r,value)
elif value==node.v:
return node.obj
def Find(self,value):
obj=self.__find__(self.r,value)
print obj
return obj
</code></pre>
<p>当我打印节点.obj在<strong>find</strong>函数中,它工作正常,但是当我在find函数中打印对象时,它返回None。<br/>
这个问题整天困扰着我。如果有人能解决这个问题,我们将不胜感激。你知道吗</p>
<p>谢谢你,伙计</p>
<p>完整代码这里:我只是写入BTS树:</p>
<pre><code> ####class####
class BSTtreeNode:
def __init__(self,lnode=None,rnode=None,parent=None,value=None,obj=None):
self.l=lnode
self.r=rnode
self.p=parent
self.v=value
self.obj=obj
class BSTree:
def __init__(self,RootNode=None):
self.r=RootNode
def Insert(self,value,obj):
self.__insert__(self.r,value,obj)
def __insert__(self,node,value,obj):
if value<=node.v:
if node.l==None:
localnode=BSTtreeNode(lnode=None,rnode=None,parent=node,value=value,obj=obj)
node.l=localnode
elif node.l!=None:
self.__insert__(node.l,value,obj)
if value>node.v:
if node.r==None:
localnode=BSTtreeNode(lnode=None,rnode=None,parent=node,value=value,obj=obj)
node.r=localnode
elif node.r!=None:
self.__insert__(node.r,value,obj)
def __find__(self,node,value):
if value<node.v:
self.__find__(node.l,value)
elif value>node.v:
self.__find__(node.r,value)
elif value==node.v:
return node.obj
def Find(self,value):
obj=self.__find__(self.r,value)
print obj
return obj
def Print(self):
self.__printTree__(self.r)
def __printTree__(self,node):
if node.l==None and node.r==None:
print node.v,node.obj
return
elif node.r != None:
self.__printTree__(node.r)
elif node.l !=None:
self.__printTree__(node.l)
print node.v,node.obj
def main():
mNode=BSTtreeNode(value=10,obj="first")
bstree=BSTree(RootNode=mNode)
bstree.Insert(value=20,obj="second")
bstree.Insert(30,obj="second")
bstree.Print()
bstree.Find(value=20)
if __name__ =="__main__":
main()
</code></pre>