关闭

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

标签: linuxlinux内核源码内核二叉树
140人阅读 评论(0) 收藏 举报
分类:

  有了队列的简单是最大的奥秘之后,悟空感觉自己找到了研究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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7254次
    • 积分:545
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档