python 二叉排序树
2024-10-18 14:10:30
class BSTNode: def __init__(self, data, left=None, right=None): self.data = data
self.left = left
self.right = right class BinarySortTree: def __init__(self):
self._root = None def is_empty(self):
return self._root is None def search(self, key): bt = self._root
while bt:
entry = bt.data
if key < entry:
bt = bt.left
elif key > entry:
bt = bt.right
else:
return entry
return None def insert(self, key): bt = self._root
if not bt:
self._root = BSTNode(key)
return
while True:
entry = bt.data
if key < entry:
if bt.left is None:
bt.left = BSTNode(key)
return
bt = bt.left
elif key > entry:
if bt.right is None:
bt.right = BSTNode(key)
return
bt = bt.right
else:
bt.data = key
return def delete(self, key): p, q = None, self._root
if not q:
print("empty tree")
return
while q and q.data != key:
p = q
if key < q.data:
q = q.left
else:
q = q.right
if not q:
return if not q.left:
if p is None:
self._root = q.right
elif q is p.left:
p.left = q.right
else:
p.right = q.right
return r = q.left
while r.right:
r = r.right
r.right = q.right
if p is None:
self._root = q.left
elif p.left is q:
p.left = q.left
else:
p.right = q.left def __iter__(self): stack = []
node = self._root
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
yield node.data
node = node.right lis = [62, 58, 88, 48, 73, 99, 35, 51, 93, 29, 37, 49, 56, 36, 50]
bs_tree = BinarySortTree()
for i in range(len(lis)):
bs_tree.insert(lis[i])
# bs_tree.insert(100)
bs_tree.delete(58)
for i in bs_tree:
print(i, end=" ")
# print("\n", bs_tree.search(4))
最新文章
- Android平台下OpenCV移植与使用---基于C/C++
- SQLSERVER如何查看索引缺失
- spoj1811 Longest Common Substring
- Jena学习笔记(2)——利用数据库保存本体
- 【JNI】C分支
- zw版【转发&#183;台湾nvp系列Delphi例程】HALCON InpaintingCt1
- css3太极图效果+自动旋转
- Lucene.Net 2.3.1开发介绍 —— 二、分词(二)
- ffempg支持文件解码
- 用java写一个servlet,可以将放在tomcat项目根目录下的文件进行下载
- Taro之使用百度地图
- 【转】shell速查表
- django通过添加session来保存公共变量
- (1-2)line-height的各类属性值
- c# 简易绘制C语言头文件包含关系图 v2.0
- LUA可变长参数 ... 三个点
- 关于Unity中场景的导入与导出(专题九)
- em和px比较
- 20165310java_blog_week7
- 新概念 Lesson 5 How are you today