第一次认识树,是在大二的课本上——《数据结构》,高深的理论知识,奇怪的图形,青春的活力,就这样聚集在一起。
树,从某种意义上来讲,不是死死的知识,而是我蓬勃的青春,可以熬一个通宵,可以顶着浓浓的睡意去吃一个早晨,然后在教室睡成歪瓜裂枣。 但,数据结构对我来说,从来不会打瞌睡,因为这是生命的度量。
树的定义,依然是理论性地,数学式地描述,那样就可以不偏颇,原生地研究味,虽然我所在的学校并非什么专业型,但,也喜欢古板而教条的严谨法则。
想要学树,先找一个特例,这个是研究的一种手段,把特殊的样例透彻了,然后再去推广,推广就是一种自然蔓延,四海适用的过程。那自然就是选择了二叉树。
递归定义
首先二叉树的定义是递归的,实际上,当初看到递归地,这几个字,脑海真的疑惑,因为陌生;后面觉得接受,因为毕竟是大家都这样认可和约定的;最后成为一种行为的约束,没有递归地,总觉得会缺少点什么,没有那么严谨。
从人的神经路径来说,未知、了解、熟悉、需要,而从现在的角度出发,我觉得因为站在一种超越地视角。以前学得那么有住,所以,不能脱离了再去看其本质,本质地游戏愉悦才是舒坦地。
空树是二叉树,此处和空集是集合的概念相似,似乎数学家就喜欢覆盖到全部,而空又有很多奇怪的概念,比如空树、空集、零向量。
当然,一颗满当当的树也是二叉树。
之间的任何二叉变化,也就都是二叉树。
当然,说这个递归地,主要是子树构成了递归,这个道理放在局部也是成立的。从一颗树中取一个子集(局部),也能满足二叉树的定义。整体和局部的递归性由此而生。
突然想到一句话:无组织纪律。这句话也可以体现递归的存在。因为从佛法地角度,无组织,实际上有一个组织的标准,才会认为一个无组织的现象。所以,当说无组织的时候,实际上是承认了组织现象的存在。故而可以递归定义:
- 无组织(空,空全序)是一个组织现象。
- 有组织(偏序关系)是一个组织现象。
- 完全组织(全序关系)是一个组织现象。
从这个角度出发,
- 空二叉树(空)。
心中有树的标准,而你却什么都没有,标准在就好,故而,这也算树。 - 只有一个根节点的(偏序,无子)
和三节点的二叉树相比,相比之下,属于树的构成,也算树。 - 只有左子树(偏序,有子)
- 只有右子树(偏序,有子)
更进一步,越来越接近完备,也是树。 - 左右子树均有(全序)
很明显,所有人都可以接受大同世界,理想状态就如此。必须是树。
Cover,应该也是数学中一个很重要的概念,一种理论应当能够覆盖所有的存在,才算是完备的。或者说递归地定义,就是用简洁地存在,表示所有的覆盖。