定义结点
首先定义一个二叉链表结点结构的定义
class Node(object):
"""节点定义,包括数据项、左孩子、右孩子"""
def __init__(self, data):
self.data = data
self.lchild = None
self.rchild = None
查找
def searchTree(T, key, f, p):
"""查找
T:树;
key:查找的节点
f:指向T的双亲,初始值为None
p:若未查找到,则返回最后一个访问的叶子结点;若查找到,则返回搜索到的结点"""
if not T:
"""T为空树,查找失败
p为空树的双亲结点,即访问的最后一个结点"""
p = f
return False, p
elif key == T.data:
"""查找成功
p为当前查找的结点"""
p = T
return True, p
elif key > T.data:
"""查找右子树"""
return searchTree(T.rchild, key, T, p)
else:
"""查找左子树"""
return searchTree(T.lchild, key, T, p)
插入
def insertTree(T, key):
"""插入"""
is_exist, p = searchTree(T, key, None,

本文介绍了如何使用Python实现二叉排序树的基本操作,包括定义结点结构、查找、插入、创建和删除结点。删除结点时,会先查找目标结点,如果存在则执行删除操作,否则失败。删除操作涉及三种情况:左子树为空、右子树为空或左右子树均不为空。对于后一种情况,需要找到一个合适的结点s来替代被删除的结点T,s结点的特性是小于T的右子节点且大于T的左子节点,并且其右子树为空。
最低0.47元/天 解锁文章
966

被折叠的 条评论
为什么被折叠?



