悟空学Linux专栏----第7篇
2015-07-08 10:50
447 查看
有了队列的简单是最大的奥秘之后,悟空感觉自己找到了研究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明明就是一颗树吗?“谷哥,你逗我呢!”
悟空想了好久也没搞明白,看来今晚又是一个“爬树的”夜了。
但是最近悟空碰到了一个令他头疼的问题,也就是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明明就是一颗树吗?“谷哥,你逗我呢!”
悟空想了好久也没搞明白,看来今晚又是一个“爬树的”夜了。
相关文章推荐
- Linux socket 初步
- 从源码安装Mysql/Percona 5.5
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区