前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >红黑树学习感想

红黑树学习感想

作者头像
yifei_
发布2022-11-14 14:45:09
3460
发布2022-11-14 14:45:09
举报
文章被收录于专栏:yifei的专栏

红黑树在很多地方有应用,在阅读《STL源码剖析》的时候遇到红黑树,费了一番功夫才看明白。

感想

学习红黑树的过程中,看了一些网络上别人的讲解,但是看来看去仍然不能够理解,也不明白每个操作的缘由。 算法导论这样给出红黑树的定义:

代码语言:javascript
复制
一般的,红黑树,满足一下性质,即只有满足一下性质的树,我们才称之为红黑树:
1)每个结点要么是红的,要么是黑的。
2)根结点是黑的。
3)每个叶结点,即空结点是黑的。
4)如果一个结点是红的,那么它的俩个儿子都是黑的。
5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。

如果你理解了红黑树之后再来看这些性质,每一条都是非常正确的,但是在初学的时候看这样的定义就一脸懵逼。 另外红黑其实表示的是边的颜色,而不是节点的颜色。 最后找到了红黑树作者的课件,作者的课件内容编排合理、图解透彻细腻并且易懂,带你一点一点地讲清楚由来以及演化过程。

代码语言:javascript
复制
//课件地址
链接: https://pan.baidu.com/s/1FeIS0Af8E3tM0ElHN9-mkA 提取码: 4pqd
//csdn上也有该课件,有人这样评价:
//Sedgewick 红黑树PPT ,地球上描述红黑树最透彻的PPT,绝对值得一看!

几点总结如下:

  • 好的教材对自学来说非常重要,内容编排合理以及辅助图解可以极大地减小学习成本。
  • 学习算法一定要从算法的演化过程、思考过程来学,这样才能理解更加深刻。
  • 一定要静下心来学习,过于急躁、急功近利反而更学不进去。

思路

课件写的非常完善,就不再赘述。

应用

  • STL库中的map、set几个关联式容器
  • Java中的Treemap
  • Linux中完全公平调度算法CFS(Completely Fair Schedule)
  • 用红黑树管理进程控制块epoll在内核中的实现,用红黑树管理事件块
  • Nginx中,用红黑树管理timer等

问题

课件page33中的min函数?

课件page57

代码语言:javascript
复制
h.left = deleteMax(h.left);
//为何是h.left,不应该是:
h.right = deleteMax(h.right);

参考

欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 感想
  • 思路
  • 应用
  • 问题
  • 参考
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档