悟空学Linux专栏----第7篇

  有了队列的简单是最大的奥秘之后,悟空感觉自己找到了研究Linux内核代码的感觉了,每次悟空研究一段代码的时候,悟空都会拿这段代码设计的够不够简单来衡量代码的质量。而且悟空发现Linux内核中很多概念都遵循了这个原则,比如Linux中一切皆是文件的概念,也就是Linux中所有的东西都是文件,就连硬件设备也被称为设备文件。所有的操作都遵循文件的操作,大大简化了操作接口。

  但是最近悟空碰到了一个令他头疼的问题,也就是Linux内核中的红黑二叉树。红黑二叉树不但不简单,而且很难理解。设计上更是很难实现,为了这个问题悟空已经在花果山的树林里上蹿下跳了好几晚,但是在树上蹿了好几晚悟空依然没法找到问题的答案。首先什么是红黑二叉树,红黑二叉树又有什么特点?其次Linux内核为什么要选择红黑二叉树?这一个个问题就像师傅的紧箍咒一样,让悟空头疼,他真想吊死在树上,如果他能死的话。

  最后,悟空决定一个一个解决,先来解决什么是红黑二叉树。红黑二叉树是一种自平衡二叉搜索树。这句话不但很拗口,而且很难理解。这里句话中包括了几个概念:树、二叉树、二叉搜索树、平衡二叉搜素树、自平衡二叉搜素树、半平衡二叉搜素树。

  在数学意义上,树是一个无环的、连接的有向图,其中任何一个顶点(在树里面叫节点)具有0个或者多个出边以及0个或者1个入边。这句话中有四个含义:

  1.无环,也就是最后这个树中不能出现环;

  2.有向图,也就是各个节点之间相连的连线是有方向的;

  3.顶点具有0个或多个出边;

  4.顶点具有0个或一个入边。

  悟空感觉语言表达的太抽象了,很难理解,于是决定求助于万能的“谷哥”,“谷哥”介绍了下面几副图:


  图 1


  图 2


  图 3

  

        图 4

  “谷哥”还告诉悟空:图1、图2、图4都不是树,只有图3才是树。这图1、图2不是树悟空可以理解,因为图1违反了无环和顶点具有0个或一个入边的规则,图2违反了有向图的标准。但是为什么图4也不是树呢?这图4明明就是一颗树吗?“谷哥,你逗我呢!”

  悟空想了好久也没搞明白,看来今晚又是一个“爬树的”夜了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值