小编给大家分享一下如何使用python实现二叉排序树,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
#二叉排序树
class BTree():
def __init__(self,data):
self.left = None
self.right = None
if type(data) == list:
self.data = data[0]
for d in data[1:]:
self.insert(d)
else:
self.data = data
def insert(self,data):
bt = self
while True:
if data <= bt.data:
if bt.left == None:
bt.left = BTree(data)
break
else:
bt = bt.left
else:
if bt.right == None:
bt.right = BTree(data)
break
else:
bt = bt.right
def mid_order(self):
res = []
stack = []
node = self
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
res.append(node.data)
node = node.right
return res
data = [5,1,2,3,6,8,9]
bt = BTree(data)
print(bt.mid_order())
class TreeNode(object):
def __init__(self,data):
self.data = data
self.left = None
self.right = None
class BinaryTree(object):
def insert(self,root, node):
if root is None:
return node
if node.data < root.data:
root.left = self.insert(root.left, node)
else:
root.right = self.insert(root.right, node)
return root
def mid_order(self,root):
node = root
stack = []
res = []
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
res.append(node.data)
node = node.right
return res
data = [5,1,2,3,6,8,9]
root = TreeNode(data[0])
tree = BinaryTree()
for i in data[1:]:
tree.insert(root,TreeNode(i))
print(tree.mid_order(root))
看完了这篇文章,相信你对“如何使用python实现二叉排序树”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。