十大排序、七大查找算法python实现——二叉树查找
class BSTNode:
def __init__(self, item, left= None, right = None):
self.item = item
self.left = left
self.right = right
class BinarySortTree:
def __init__(self):
self.root = None
def insert(self, item):
bt = self.root
if self.root is None:
self.root = BSTNode(item)
return
while True:
if item > bt.item:
if bt.right is None:
bt.right = BSTNode(item)
return
else:
bt = bt.right
elif item < bt.item:
if bt.left is None:
bt.left = BSTNode(item)
return
else:
bt = bt.left
else:
bt.item = item
return
def search(self, key):
bt = self.root
while bt:
if bt.item < key:
bt = bt.right
elif bt.item > key:
bt = bt.left
else:
return True
return False
def __iter__(self):
"""
实现二叉树的中序遍历算法,
展示我们创建的二叉查找树.
直接使用python内置的列表作为一个栈。
:return: data
"""
stack = []
node = self.root
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
yield node.item
node = node.right
if __name__ == '__main__':
lis = random_list(1,100,20)
bs_tree = BinarySortTree()
for i in range(len(lis)):
bs_tree.insert(lis[i])
for i in bs_tree:
print(i, end=" ")