1.算法
算法:是指解題方案準確而完整的描述
算法不等于程序八酒,也不等于計算方法,程序的編制不可能優(yōu)于算法的設計。
算法的基本特征:是一組嚴謹地定義運算順序的規(guī)則儿倒,每一個規(guī)則都是有效的掰吕,是明確的果覆,此順序將在有限的次數下終止。特征包括:
(1)可行性殖熟;
(2)確定性局待,算法中每一步驟都必須有明確定義,不允許有模棱兩可的解釋菱属,不允許有多義性钳榨;
(3)有窮性,算法必須能在有限的時間內做完纽门,即能在執(zhí)行有限個步驟后終止薛耻,包括合理的執(zhí)行時間的含義;
(4)擁有足夠的情報赏陵。
算法的基本要素:一是對數據對象的運算和操作饼齿;二是算法的控制結構愤钾。
算法的三種基本控制結構:順序結構、選擇結構候醒、循環(huán)結構
算法復雜度包括:算法時間復雜度和算法空間復雜度能颁。
算法時間復雜度是指執(zhí)行算法所需要的計算工作量。
算法空間復雜度是指執(zhí)行算法所需要的內存空間倒淫。
2.棧及其基本運算
棧是限定在一端進行插入與刪除運算的線性表伙菊。
在棧中,允許插入與刪除的一端稱為棧頂敌土,不允許插入與刪除的另一端稱為棧底镜硕。棧頂元素總是最后被插入的元素,棧底元素總是最先被插入的元素返干。
即棧是按照“先進后出”或“后進先出”的原則組織數據的兴枯。
棧的基本運算:
(1)插入元素稱為入棧運算;
(2)刪除元素稱為出椌厍罚或退棧運算财剖;
注意:入棧順序是ABC,出棧順序不一定是CBA癌淮√煞兀可能中途B進棧后又出棧了,最后就是BCA乳蓄。
3.隊列及其基本運算
隊列是指允許在一端(隊尾)進行插入咪橙,而在另一端(對頭)進行刪除的線性表。尾指針(Rear)指向隊尾元素虚倒,頭指針(Front)指向排頭元素的前一個位置(隊頭)美侦。
隊列是“先進先出”或“后進后出”的線性表。
隊列運算包括:
(1)入隊運算:從隊尾插入一個元素魂奥;
(2)退隊運算:從隊頭刪除一個元素菠剩。
可以理解為排隊的順序,先進先出捧弃。指定元素的前一個元素稱為前件赠叼,后一個元素稱為后件,頭和尾沒有前后件违霞。隊頭指針指向第一個元素的前一個位置嘴办,隊尾指針指向最后一個元素。算元素的個數就只需要用隊尾減去隊頭(不需要再加上1)买鸽。
4.循環(huán)隊列及其運算:
所謂循環(huán)隊列涧郊,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間眼五,供隊列循環(huán)使用妆艘。在循環(huán)隊列中彤灶,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置批旺,因此幌陕,從頭指針front指向的后一個位置直到隊尾指針rear指向的位置之前,所有的元素均為隊列中的元素汽煮。
循環(huán)隊列中元素的個數=rear-front.
a.如果大于0搏熄,rear-front即為元素的個數;
b.如果小于0暇赤,rear-front+空間容量即為元素的個數心例;
c.如果等于0,元素的個數為0或空間容量鞋囊。
5.二叉樹及其基本性質
二叉樹是一種非線性結構止后,它具有以下兩個特點:
(1)非空二叉樹只有一個根結點;
(2)每一個結點最多有兩棵子樹溜腐,且分別稱為該結點的左子樹與右子樹译株。
根據二叉樹的概念可知,二叉樹的度可以為0(葉結點)逗扒、1(只有一棵子樹)或2(有兩棵子樹)古戴。
二叉樹考點1:
在任意一棵二叉樹中欠橘,度數為0的結點(即葉子結點)總比度為2的結點多一個矩肩。葉子數(度為0)=度為2結點數+1;
二叉樹考點2:
二叉樹的深度即二叉樹的層次數肃续;
二叉樹考點3:
總結點數=度為2的結點數+度為1的結點數+度為0的結點數(葉子)
二叉樹考點4:二叉樹的遍歷
二叉樹的遍歷是指不重復地訪問二叉樹中的所有結點黍檩。
二叉樹的遍歷可以分為以下三種:
(1)前序遍歷:若二叉樹為空,則返回結束始锚。否則:首先訪問根結點刽酱,然后遍歷左子樹,最后遍歷右子樹瞧捌;
(2)中序序遍歷:若二叉樹為空棵里,則返回結束。否則:首先遍歷左子樹姐呐,然后訪問根結點殿怜,最后遍歷右子樹;
(3)后序遍歷:若二叉樹為空曙砂,則返回結束头谜。否則:首先遍歷左子樹,然后遍歷右子樹鸠澈,最后訪問根結點柱告。
如果葉子數為1截驮,那就只能分一個叉,一層只有一個叉际度。
前序遍歷:ABDGHICEJF 中左右葵袭,從上到下挨個遍歷。
中序遍歷:GDIHBAEJCF 左中右乖菱,從左到右依次遍歷眶熬。前序的第一個結點是根結點,根結點前面的屬于二層左結點块请,后面的屬于二層右節(jié)點
后序遍歷:GIHDBJEFCA 左右中娜氏,從下到上挨個遍歷,后序的最后一個結點是根結點
大家可以根據以上的任意兩種遍歷方式畫出二叉樹并算出最后一種遍歷