1.棧的基本概念
棧是限定只在一端進(jìn)行插入與刪除的線性表,通常稱插入、刪除的這一端為棧頂,另一端為棧底。當(dāng)表中沒有元素時稱為空棧。棧頂元素總是后被插入的元素,從而也是最先被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。棧是按照先進(jìn)后出或后進(jìn)先出的原則組織數(shù)據(jù)的。
2.棧的順序存儲及其運(yùn)算
用一維數(shù)組S(1∶m)作為棧的順序存儲空間,其中m為最大容量。
在棧的順序存儲空間S(1∶m)中,S(bottom)為棧底元素,S(top)為棧頂元素。top=0表示?;top=m表示棧滿。
棧的基本運(yùn)算有三種:入棧、退棧與讀棧頂元素。
(1)入棧運(yùn)算:入棧運(yùn)算是指在棧頂位置插入一個新元素。首先將棧頂指針加一(即top加1),然后將新元素插入到棧頂指針指向的位置。當(dāng)棧頂指針已經(jīng)指向存儲空間的最后一個位置時,說明?臻g已滿,不可能再進(jìn)行入棧操作。這種情況稱為棧上溢錯誤。
(2)退棧運(yùn)算:退棧是指取出棧頂元素并賦給一個指定的變量。首先將棧頂元素(棧頂指針指向的元素)賦給一個指定的變量,然后將棧頂指針減一(即top減1)。當(dāng)棧頂指針為0時,說明?,不可進(jìn)行退棧操作。這種情況稱為棧的下溢錯誤。
(3)讀棧頂元素:讀棧頂元素是指將棧頂元素賦給一個指定的變量。這個運(yùn)算不刪除棧頂元素,只是將它賦給一個變量,因此棧頂指針不會改變。當(dāng)棧頂指針為0時,說明棧空,讀不到棧頂元素。
小技巧:棧是按照先進(jìn)后出或后進(jìn)先出的原則組織數(shù)據(jù),但是出棧方式有多種選擇,在考題中經(jīng)常考查各種不同的出棧方式。
樹及二叉樹的性質(zhì)
誤區(qū)警示:
滿二叉樹也是完全二叉樹,而完全二叉樹一般不是滿二叉樹。應(yīng)該注意二者的區(qū)別。
1、樹的基本概念
樹(tree)是一種簡單的非線性結(jié)構(gòu)。在樹結(jié)構(gòu)中,每一個結(jié)點只有一個前件,稱為父結(jié)點,沒有前件的結(jié)點只有一個,稱為樹的根結(jié)點。每一個結(jié)點可以有多個后件,它們稱為該結(jié)點的子結(jié)點。沒有后件的結(jié)點稱為葉子結(jié)點。
在樹結(jié)構(gòu)中,一個結(jié)點所擁有的后件個數(shù)稱為該結(jié)點的度。葉子結(jié)點的度為0。在樹中,所有結(jié)點中的最大的度稱為樹的度。
2、二叉樹及其基本性質(zhì)
(1)二叉樹的定義
二叉樹是一種很有用的非線性結(jié)構(gòu),具有以下兩個特點:
、俜强斩鏄渲挥幸粋根結(jié)點;
②每一個結(jié)點最多有兩棵子樹,且分別稱為該結(jié)點的左子樹和右子樹。
由以上特點可以看出,在二叉樹中,每一個結(jié)點的度最大為2,即所有子樹(左子樹或右子樹)也均為二叉樹,而樹結(jié)構(gòu)中的每一個結(jié)點的度可以是任意的。另外,二叉樹中的每個結(jié)點的子樹被明顯地分為左子樹和右子樹。在二叉樹中,一個結(jié)點可以只有左子樹而沒有右子樹,也可以只有右子樹而沒有左子樹。當(dāng)一個結(jié)點既沒有左子樹也沒有右子樹時,該結(jié)點即為葉子結(jié)點。
(2)二叉樹的基本性質(zhì)
二叉樹具有以下幾個性質(zhì):
性質(zhì)1:在二叉樹的第k層上,最多有2k-1(k≥1)個結(jié)點;
性質(zhì)2:深度為m的二叉樹最多有2m-1個結(jié)點;
性質(zhì)3:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。
二叉樹的遍歷
在遍歷二叉樹的過程中,一般先遍歷左子樹,再遍歷右子樹。在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷分為三類:前序遍歷、中序遍歷和后序遍歷。
(1)前序遍歷:先訪問根結(jié)點、然后遍歷左子樹,最后遍歷右子樹;并且,在遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。
(2)中序遍歷:先遍歷左子樹、然后訪問根結(jié)點,最后遍歷右子樹;并且,在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。
(3)后序遍歷:先遍歷左子樹、然后遍歷右子樹,最后訪問根結(jié)點;并且,在遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。
疑難解答:樹與二叉樹的不同之處是什么?
在二叉樹中,每一個結(jié)點的度最大為2,即所有子樹(左子樹或右子樹)也均為二叉樹,而樹結(jié)構(gòu)中的每一個結(jié)點的度可以是任意的。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |