棧的概念是什麼?遍歷二叉樹有幾種方法?

一樓和二樓滴筒子,棧是後進先出(先進後出)的線性表,即LIFO結構,隊列纔是先進先出的線性表,即FIFO結構。
三樓滴筒子,棧是限制僅在“表尾”進行插入或刪除操作的。

棧:
1)棧stack是限定僅在表尾進行插入或刪除操作的線性表。對棧來說,表尾有特殊的含義,稱爲棧頂top,表頭端稱爲棧底bottom。不含元素的空表稱爲空棧。
2)棧的修改按後進先出的原則進行,總是插入或刪除“棧頂元素”。
3)棧的基本操作除了在棧頂進行插入或刪除外,還有棧的初始化、判空及取棧頂元素等。
如,另附:
棧的初始化操作:按設定的初始分配量進行第一次存儲分配,base可稱爲棧底指針,在順序棧中,它始終指向棧底的位置。若base的值爲NULL,則表示棧結構不存在。top爲棧頂指針,當其初值指向棧底,即top=base時可作爲棧空的標記。每當插入新的棧頂元素時,指針top增1;刪除棧頂元素時,指針top減1,因此,非空棧中的棧頂指針始終在棧頂元素的“下一個位置”上。

遍歷二叉樹:
先告訴LZ一個概念,二叉樹由根結點、左子樹、右子樹三個基本單元組成,因此,若能依次遍歷這三個部分,便是遍歷了整個二叉樹。所以,遍歷方案要定下執行“遍歷左子樹”“訪問根結點”“遍歷右子樹”這三個部分的次序。總結所有的方案後,分爲以下三種情況:

先序遍歷二叉樹~~
若二叉樹爲空,則空操作,否則
1.訪問根結點;
2.先序遍歷左子樹;
3.先序遍歷右子樹。

中序遍歷二叉樹~~
若二叉樹爲空,則空操作,否則
1.中序遍歷左子樹;
2.訪問根結點;
3.中序遍歷右子樹。

後序遍歷二叉樹~~
若二叉樹爲空,則空操作,否則
1.後序遍歷左子樹;
2.後序遍歷右子樹;
3.訪問根結點。

在數據結構學中規定,限定在執行“遍歷左子樹”和“遍歷右子樹”時先左後右,所以,三種情況實質上是因爲“訪問根結點”的次序不同。因此,三種方法又稱作:先根序遍歷、中根序遍歷、後根序遍歷。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章