資料結構中求樹的先序遍歷為什麼要用佇列和棧

2021-03-04 09:00:54 字數 1694 閱讀 3716

1樓:匿名使用者

其實遞迴和棧的作用是一樣的,只是棧靠你自己寫,遞迴是系統幫你在棧裡寫

棧和佇列資料結構的特點,什麼情況下用到棧,什麼情況下用到佇列(各舉3個例子)

2樓:李圈兒兒

棧和佇列資料結構的特點是:

棧特點就是乙個先進後出的結構內。

佇列特點就是乙個先進先出的結構。

棧和佇列的區別是:

資料結構不同佇列先進先出,棧先進後出。

對插入和刪除操作的"限定"。 棧是限定只能在表的一端進行插入和刪除操作的線性表。      佇列是限定只能在表的一端進行插入和在另一端進行刪除操作的線性表。

遍歷資料速度不同。棧容只能從頭部取資料 也就最先放入的需要遍歷整個棧最後才能取出來,而且在遍歷資料的時候還得為資料開闢臨時空間,保持資料在遍歷前的一致性佇列怎不同,他基於位址指標進行遍歷,而且可以從頭或尾部開始遍歷,但不能同時遍歷,無需開闢臨時空間。

3樓:不懂多來問問

棧:特點就是乙個先進後出的結構。

佇列:特點就是乙個先進先出的結構。

//一般只要

專你滿足這個特點就可屬

以稱之為棧或佇列。

棧的應用:非常廣泛,在cpu內部就有提供棧這個機制。主要用途:

函式呼叫和返回,數字轉字元,表示式求值,走迷宮等等。在cpu內部棧主要是用來進行子程式呼叫和返回,中斷時資料儲存和返回。在程式語言中:

主要用來進行函式的呼叫和返回。可以說在計算機中,只要資料的儲存滿足先進後出的原理,都優先考慮使用棧,所以棧是計算機中不可缺的機制。

佇列的應用:佇列主要用在和時間有關的地方,特別是作業系統中,佇列是實現多工的重要機制。windows中的訊息機制就是通過佇列來實現的。

程序排程也是使用佇列來實現,所以佇列也是乙個重要的機制。只要滿足資料的先進先出原理就可以使用佇列。

4樓:

棧的bai特點:操作受限,只能在表du

的一端進行zhi插入、刪除,是先進後出的dao線性表專。算符優先演算法求表達屬式的值、表示式的括號匹配問題、迷宮求解、進製轉換等問題都具有先進後出的特點,需使用棧結構。

佇列的特點:操作受限,只能在表的一端插入,另一端刪除,是先進先出的線性表。舞伴問題、作業系統的程序|作業管理中的先進先出服務、字串行是否回文等由於具有先進先出的特點,需要使用佇列結構。

實現圖的廣度優先搜尋演算法需使用的輔助資料結構為( ) a. 棧 b.佇列 c. 二叉樹 麻煩解釋一下,謝謝

5樓:匿名使用者

廣度優先copy用佇列,深度優先用棧。簡單說明bai如下:

廣度優先:當一du個節點zhi被加入佇列時,要標記為已遍歷,遍歷過

dao程中,對於佇列第乙個元素,遍歷其所有能夠能一步達到的節點,如果是標記未遍歷的,將其加入佇列,從第乙個元素出發所有能一步直接達到的節點遍歷結束後將這個元素出列。

深度優先:當遍歷到某個節點a時,如果是標記未遍歷,將其入棧,遍歷它能夠一步直接達到的節點,如果是標記未遍歷,將其入棧且標記為已遍歷,然後對其進行類似a的操作,否則找能夠一步直接達到的節點進行類似操作。直到所有能夠一步直接達到的節點都已遍歷,將a出棧。

這裡使用「能夠能一步達到的節點」而非「與其相鄰的節點」是考慮到有向圖因素。

具體可以找個圖,然後使用廣度和深度演算法搜尋一遍,每步自己手工修改佇列和棧就明白怎麼回事了。

中序遞迴遍歷二叉樹的演算法?(資料結構)

include include define maxsize 100 typedef char elemtype typedef struct node bitnode j ch str j bitnode find bitnode b,elemtype x bitnode lchild bitno...

資料結構二叉樹的遍歷,C語言資料結構 二叉樹的遍歷

前序 根,左兒子,右兒子 中序 左兒子,根,右兒子 後序 左兒子,右兒子,根 首先是要牢記一上幾句話 比如這棵樹的中許遍歷,a有左兒子,先不訪問a,以此類推,直到d沒有左兒子,訪問d,然後訪問d的根b,然後應該訪問b的右兒子,但是b沒有,所以訪問b的根a,訪問完a以後訪問a的右子樹。先看c,c有左兒...

java中的資料結構是個什麼概念

1 列舉 enumeration 介面雖然它本身不屬於資料 資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在 一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。資料結構在計算機科學界至今沒有標...