二叉樹的創建和遍歷

二叉樹的遍歷:從根節點出發,按照某種次序依次訪問二叉樹中所有的結點,使得每個節點被訪問一次且僅被訪問一次。

二叉樹遍歷次序不同的原因:樹的結點之間不存在唯一的前驅和後繼關係,因此訪問到不同結點時會有不同的訪問選擇。選擇方式不同,訪問的次序也就不同了。

二叉樹的遍歷方法主要分爲四種(自定義左子樹 L(eft);根節點 r(oot);右子樹 R(ight))(最下方有彩蛋):

前序遍歷

中序遍歷

後序遍歷

層次遍歷

 

前序遍歷( rLR )

規則:若二叉樹爲空,則空操作返回;否則先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹。

如下圖:遍歷的順序即是數字出棧的順序 1,2,3,5,4。

 

 

                                                                       先序遍歷結點進出站過程

  • 初態棧空;
  • 結點1入棧;
  • 出棧,輸出棧頂結點1,並將1的左右孩子(2和4)入棧,右孩子先入棧,左孩子後入棧。因爲要先訪問左孩子,棧是先進後出結構,所以要讓左孩子後進才能先訪問;
  • 出棧,輸出棧頂結點2,並將2的左右孩子(3和5)入棧;
  • 出棧,輸出棧頂結點3,3爲葉子結點,無孩子,本步無結點入棧;
  • 出棧,輸出棧頂結點5,5爲葉子結點,無孩子,本步無結點入棧;
  • 出棧,輸出棧頂結點4,棧空,進入終態。

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章