有一種數據結構叫做樹
計算機科學中,有一門基礎課程叫做數據結構。它是專門研究現實世界中,物體之間的關係,以及這種關係在計算機中是如何存儲的。通俗講,就是把現實世界中物與物之間的關係弄到計算機裡面去,只有弄進去了,才有可能通過計算機科學的方法研究它們。物與物相互之間的關係,就構成了一種結構。在計算機科學中,是用數據來表示物體的,因此,這種數字化了的物體之間的結構,又叫做數據的結構。
樹,便是一種重要的數據結構。任何一本講數據結構的著作,都會有一個完整的章節來講樹。這種結構一般如下圖所示,
但是,按我的理解,應該是翻過來的。即,這樣
為什麼會有這種數據結構,現實生產生活中,肯定有類似的問題存在。比如,鑽山洞,是溶洞那種山洞。
在洞中有很多分叉,在毎一個叉點,都有好幾種去路供判斷選擇。但是,如果想退回洞口,就只有一條路可走。樹,其實描述的就是這一類問題,去向有很多選擇,但退回,只有一條路可走。因此,與其將這種數據結構叫做樹,還不如叫做「洞」。
現實中,沒有那麼多洞可鑽,也沒那麼多人愛鑽洞。計算機科學這麼重視這種結構,肯定有更廣泛的存在。
是的,太廣泛了,它其實描述的是人生。
在我們人的一生,或者截取任何一個片段。毎到一個節點,都有0,1或者若干種選擇,但是如果回頭望,我們走過的,卻只有一條路徑,這就是我們的經歷。
比如,我的一個朋友,這些來在一些節點經歷了選擇。文理分科,選理科;高考專業,選擇了醫學;醫學分支,選擇了外科;外科科室,選了肝膽;工作,幾大醫院盛情邀請加盟,選擇了東方肝膽。對於他來講,他面對了很多個分叉,做出了好幾次選擇。但作為他人,或者客觀來看,我們只會這麼說,他讀了理科,學了醫,選了外科,修了肝膽,去了上海。只有這麼一條路徑。
正是因為樹這種結構的廣泛存在。計算機科學才會專門研究它。它不僅是一種描述,還有更深刻的啟示。
那就是,一定要活在當下,站在當下的節點上,面對未來,做出最符合自己內心的選擇。身後,只有一條固化的路徑,前方,還大有可為。在樹的毎一個節點,無論是最下面的根節點,還是中間的任何一個節點,往前看,都是一模一樣的。前方有分岔,分岔還有分岔……。也就是說,站在任何一個節點,往前看,以站立處為根節點,前方都是一棵樹,沒有任何區別。這種思想,產生了用遞歸來存儲樹的方法。反正沒有區別,就用同樣的方式來建立分岔好了,重複調用就可以了,這樣,就節省了很多工作量。
在計算機科學中,遞歸的思想很重要。她對現實的指導意義,就在於,活在當下,每個時刻和節點,做出選擇的重要性。選擇,沒有對錯。試問,誰來告訴我,什麼是對的,什麼是錯的?沒有,每個人都有自己的標準。所謂正確的選擇,也即大多數人的標準而已。如果能追尋自己內心的聲音,追求目標和實際利益的最大化,盡量在法律允許的範圍內,合作共贏,不能共贏則將對他人的傷害控制在一個可以接受的範圍內,做出順應本心的選擇。我認為,這就是一個很好的選擇。這也僅僅是我的標準。
我們的前方,永遠都是一棵樹,在前方的前方,還是一顆樹,站在前方的前方的前方,面前還是一顆樹……。在身後,卻是一條已經固化的路徑,哎……。活在當下,立足當下,面對未來,做出選擇,真的太重要。選擇比努力,重要地多的多。選擇之後,是否堅持自己選擇,也是一種選擇,好累啊。
無關緊要的選擇,隨心就好。在大的選擇面前,要做出合適的選擇,考察對比各種選擇路徑帶來的價值是有必要的。這在計算科學中,屬於演算法的內容。所謂的演算法,就是如何去做以達到目的的步驟和方法。這些步驟和方法,若想計算機能夠識別和運作,要用編程語言來表示。這就是程序。所以,數據結構是很重要的,只有把現實中的物體與物體之間關係弄到計算機裡面去了,才能讓程序在上面跑。
希望每一個朋友在大多數節點,都能做出順應自己內心的選擇。
推薦閱讀:
※車萬翔是誰?在他的背後又有哪些傳奇經歷?
※目前超級計算機的性能局限是硬體還是軟體,為什麼?
※《黑客帝國》中的先知是人還是程序?
※如何評價 2017 年 9 月 17 日 PAT 考試伺服器宕機?