資料結構--樹

來源:互聯網
上載者:User

標籤:info   先序遍曆   null   運行   樹遍曆   兩個指標   方式   研究   需要   

 概念

樹是一種非線性資料結構,相對於線性資料結構(鏈表、數組)而言,樹由節點群組成,樹的平均已耗用時間更短(往往與樹相關的排序時間複雜度都不會高),一般的樹是有很多很多個分支的,分支下又有很多很多個分支,如果在程式中研究這個會非常麻煩。因為本來樹就是非線性,而我們電腦的記憶體是線性儲存的,太過複雜的話我們無法設計出來的,因此,我們先來研究簡單又經常用的---> 二叉樹。

二叉樹

二叉樹的意思就是說:每個節點不能多於有兩個兒子。

樹的建立

樹由節點群組成,因此,我們定義樹的時候往往是->定義節點->節點串連起來就成了樹,而節點的定義就是:一個資料、兩個指標(如果有節點就指向節點、沒有節點就指向null)。

上面說了,樹是由若干個節點群組成,節點串連起來就成了樹,而節點由一個資料、兩個指標組成

 

因此,建立樹實際上就是建立節點,然後串連節點

樹的遍曆

我們如果可以像數組一樣遍曆樹(看它的資料),那就說明樹建立完成了~

二叉樹遍曆有三種方式:

先序遍曆

先訪問根節點,然後訪問左節點,最後訪問右節點(根->左->右)

中序遍曆

先訪問左節點,然後訪問根節點,最後訪問右節點(左->根->右)

後序遍曆

先訪問左節點,然後訪問右節點,最後訪問根節點(左->右->根)

遍曆二叉樹的一個例子:

以上面的二叉樹為例:

如果是先序遍曆:10->9->20->15->35

如果是中序遍曆:9->10->15->20->35

可能需要解釋地方:訪問完10節點過後,去找的是20節點,但20下還有子節點,因此先訪問的是20的左兒子15節點。由於15節點沒有兒子了。所以就返回20節點,訪問20節點。最後訪問35節點

如果是後序遍曆:9->15->35->20->10

可能需要解釋地方:先訪問9節點,隨後應該訪問的是20節點,但20下還有子節點,因此先訪問的是20的左兒子15節點。由於15節點沒有兒子了。所以就去訪問35節點,由於35節點也沒有兒子了,所以返回20節點,最終返回10節點

一句話總結:先序(根->左->右),中序(左->根->右),後序(左->右->根)。如果訪問有孩子的節點,先處理孩子的,隨後返回

無論先中後遍曆,每個節點的遍曆如果訪問有孩子的節點,先處理孩子的(邏輯是一樣的)

因此我們很容易想到遞迴。

 

有意思的是:通過先序和中序或者中序和後序我們可以還原出原始的二叉樹,但是通過先序和後續是無法還原出原始的二叉樹的

也就是說:通過中序和先序或者中序和後序我們就可以確定一顆二叉樹了!

 

資料結構--樹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.