AVL树与Hash Table

二叉查找树,left < parent < right。比较简单。

AVL树,是平衡的二叉查找树。它是根据 rotate 操作来维持树的平衡的。

方便记忆一点,比如左旋 A ,就是 A 与 A 的右节点进行旋;右旋 B ,就是 B 与 B 的左节点进行旋。

那么,当 AVL 树不平衡时,就需要进行适当的 rotate 。具体应该有6种情况。由于对称性,只需要记忆3种。不妨设 x is right-heavy。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态查找表可以使用各种数据结构来实现,比如哈希表、红黑树、AVL树等等。以下是一个使用哈希表实现的动态查找表代码示例: ```python class DynamicHashTable: def __init__(self): self.capacity = 16 # 初始容量 self.size = 0 # 元素个数 self.table = [None] * self.capacity # 哈希表 # 哈希函数 def _hash(self, key): return hash(key) % self.capacity # 扩容 def _resize(self): self.capacity *= 2 new_table = [None] * self.capacity for i in range(len(self.table)): item = self.table[i] if item is not None: key, value = item index = self._hash(key) while new_table[index] is not None: index = (index + 1) % self.capacity new_table[index] = (key, value) self.table = new_table # 插入 def insert(self, key, value): if self.size >= self.capacity * 0.75: self._resize() index = self._hash(key) while self.table[index] is not None: if self.table[index][0] == key: self.table[index] = (key, value) return index = (index + 1) % self.capacity self.table[index] = (key, value) self.size += 1 # 查找 def find(self, key): index = self._hash(key) while self.table[index] is not None: if self.table[index][0] == key: return self.table[index][1] index = (index + 1) % self.capacity return None # 删除 def delete(self, key): index = self._hash(key) while self.table[index] is not None: if self.table[index][0] == key: self.table[index] = None self.size -= 1 return index = (index + 1) % self.capacity ``` 这个示例使用哈希表来实现动态查找表,哈希函数使用了Python内置的`hash`函数。在插入元素时,如果哈希表的负载因子大于0.75,则进行扩容操作。在查找和删除元素时,使用线性探测解决哈希冲突。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值