在Python中实现二叉树的最佳数据结构是什么
下面是我对二叉搜索树的简单递归实现
#/usr/bin/python
类节点:
定义初始值(self,val):
self.l=无
self.r=无
self.v=val
类树:
定义初始化(自):
self.root=None
def getRoot(self):
返回自根
def添加(自身,val):
如果self.root为无:
self.root=节点(val)
其他:
self.\u添加(val,self.root)
定义添加(自身、val、节点):
如果val<;节点五:
如果node.l不是None:
self.\u添加(val,node.l)
其他:
node.l=节点(val)
其他:
如果node.r不是None:
self.\u添加(val,node.r)
其他:
node.r=节点(val)
def查找(自我,val):
如果self.root不是None:
返回self.\u查找(val,self.root)
其他:
一无所获
def_find(self、val、node):
如果val==node.v:
返回节点
elif(val<;node.v和node.l不是None):
返回self.\u查找(val,node.l)
elif(val>;node.v和node.r不是None):
返回self.\u查找(val,node.r)
def deleteTree(自):
#垃圾收集器将为我们做这件事。
self.root=None
def打印树(自身):
如果self.root不是None:
self.\u打印树(self.root)
def_打印树(自身,节点):
如果节点不是“无”:
self.\u打印树(node.l)
打印(str(node.v)+'')
self.\u打印树(node.r)
# 3
# 0 4
# 2 8
tree=tree()
树。添加(3)
树。添加(4)
树。添加(0)
树。添加(8)
树。添加(2)
tree.printTree()
打印(tree.find(3.v)
打印(tree.find(10))
tree.deleteTree()
tree.printTree()