I am sorry i meet the akward problem in my python program. First of all I am newbie here and I am a Chinese student. Please forgive my poor English. I will try my best to express the problem clearly.
the Error Code is Here:
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
when I print the node.obj in find function it works well but when I print the obj in Find function, it return None.
This question is bothering me all day. if someone could solve it, it will be very appreciated.
thanks guy
Complete code here:i just write the BTS tree:
####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()