如何将Python实现红黑树的理论与实践记录日志?

2026-04-27 21:5651阅读0评论建站教程
  • 内容介绍
  • 文章标签
  • 相关推荐

前言——我为什么要在Python里玩红黑树

说实话, 我本来只想写个list.append后来啊一不小心掉进了《算法导论》的深渊,红黑树这只“颜色怪兽”硬是把我拽了进去。于是 我决定把这段血泪史记录下来顺便让搜索引擎也能感受到我的痛苦,太治愈了。。

警告:本文内容极其随意,可能出现拼写错误、代码缺失、甚至情绪失控。阅读请自备耐心和咖啡,最后说一句。。

Python实现红黑树:从理论到实践的记录日志

一、理论篇——红黑树到底是个啥玩意儿?

基本上... 先给大家一个简陋的定义:红黑树是一棵二叉搜索树, 只不过每个节点会被涂成红或黑,用来强迫自己保持平衡。

它的五条规则大概是:

  • 根节点必须是黑色
  • 每个叶子都是黑色
  • 红节点的子节点一定是黑色
  • 从任意节点到所有后代叶子的路径上, 黑色节点数相同
  • ......

*此处应有数学推导*,但我懒得写,只想说:高度 ≤ 2·log₂ , 恕我直言... 所以查询是 O。好啦,就这么定了。

阅读全文

前言——我为什么要在Python里玩红黑树

说实话, 我本来只想写个list.append后来啊一不小心掉进了《算法导论》的深渊,红黑树这只“颜色怪兽”硬是把我拽了进去。于是 我决定把这段血泪史记录下来顺便让搜索引擎也能感受到我的痛苦,太治愈了。。

警告:本文内容极其随意,可能出现拼写错误、代码缺失、甚至情绪失控。阅读请自备耐心和咖啡,最后说一句。。

Python实现红黑树:从理论到实践的记录日志

一、理论篇——红黑树到底是个啥玩意儿?

基本上... 先给大家一个简陋的定义:红黑树是一棵二叉搜索树, 只不过每个节点会被涂成红或黑,用来强迫自己保持平衡。

它的五条规则大概是:

  • 根节点必须是黑色
  • 每个叶子都是黑色
  • 红节点的子节点一定是黑色
  • 从任意节点到所有后代叶子的路径上, 黑色节点数相同
  • ......

*此处应有数学推导*,但我懒得写,只想说:高度 ≤ 2·log₂ , 恕我直言... 所以查询是 O。好啦,就这么定了。

阅读全文