python红黑树

理解红黑树并实现(python3) https://blog.csdn.net/net_wolf_007/article/details/79706498
红黑树常见面试问题整理 https://blog.csdn.net/fantacy10000/article/details/100855055

可以回答这个问题,以下是一个简单的 Python 红黑树代码实现: ```python class Node: def __init__(self, key): self.key = key self.left = None self.right = None self.color = 1 class RedBlackTree: def __init__(self): self.null_node = Node(None) self.null_node.color = 0 self.root = self.null_node def rotate_left(self, x): y = x.right x.right = y.left if y.left != self.null_node: y.left.parent = x y.parent = x.parent if x.parent == self.null_node: self.root = y elif x == x.parent.left: x.parent.left = y else: x.parent.right = y y.left = x x.parent = y def rotate_right(self, x): y = x.left x.left = y.right if y.right != self.null_node: y.right.parent = x y.parent = x.parent if x.parent == self.null_node: self.root = y elif x == x.parent.right: x.parent.right = y else: x.parent.left = y y.right = x x.parent = y def fix_insert(self, z): while z.parent.color == 1: if z.parent == z.parent.parent.right: y = z.parent.parent.left if y.color == 1: y.color = 0 z.parent.color = 0 z.parent.parent.color = 1 z = z.parent.parent else: if z == z.parent.left: z = z.parent self.rotate_right(z) z.parent.color = 0 z.parent.parent.color = 1 self.rotate_left(z.parent.parent) else: y = z.parent.parent.right if y.color == 1: y.color = 0 z.parent.color = 0 z.parent.parent.color = 1 z = z.parent.parent else: if z == z.parent.right: z = z.parent self.rotate_left(z) z.parent.color = 0 z.parent.parent.color = 1 self.rotate_right(z.parent.parent) self.root.color = 0 def insert(self, key): z = Node(key) z.parent = self.null_node z.left = self.null_node z.right = self.null_node z.color = 1 y = None x = self.root while x != self.null_node: y = x if z.key < x.key: x = x.left else: x = x.right z.parent = y if y == None: self.root = z elif z.key < y.key: y.left = z else: y.right = z if z.parent == None: z.color = 0 return if z.parent.parent == None: return self.fix_insert(z) def inorder_helper(self, node): if node != self.null_node: self.inorder_helper(node.left) print(node.key) self.inorder_helper(node.right) def inorder(self): self.inorder_helper(self.root) ``` 希望这个代码实现能够帮助你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值