數據結構與算法

1.算法

算法:是指解題方案準確而完整的描述

算法不等于程序八酒,也不等于計算方法,程序的編制不可能優(yōu)于算法的設計。

算法的基本特征:是一組嚴謹地定義運算順序的規(guī)則儿倒,每一個規(guī)則都是有效的掰吕,是明確的果覆,此順序將在有限的次數下終止。特征包括:

(1)可行性殖熟;

(2)確定性局待,算法中每一步驟都必須有明確定義,不允許有模棱兩可的解釋菱属,不允許有多義性钳榨;

(3)有窮性,算法必須能在有限的時間內做完纽门,即能在執(zhí)行有限個步驟后終止薛耻,包括合理的執(zhí)行時間的含義;

(4)擁有足夠的情報赏陵。

算法的基本要素:一是對數據對象的運算和操作饼齿;二是算法的控制結構愤钾。

算法的三種基本控制結構:順序結構、選擇結構候醒、循環(huán)結構

算法復雜度包括:算法時間復雜度和算法空間復雜度能颁。

算法時間復雜度是指執(zhí)行算法所需要的計算工作量。

算法空間復雜度是指執(zhí)行算法所需要的內存空間倒淫。

2.棧及其基本運算

棧是限定在一端進行插入與刪除運算的線性表伙菊。

在棧中,允許插入與刪除的一端稱為棧頂敌土,不允許插入與刪除的另一端稱為棧底镜硕。棧頂元素總是最后被插入的元素,棧底元素總是最先被插入的元素返干。

即棧是按照“先進后出”或“后進先出”的原則組織數據的兴枯。

棧的基本運算:

(1)插入元素稱為入棧運算;

(2)刪除元素稱為出椌厍罚或退棧運算财剖;

image

注意:入棧順序是ABC,出棧順序不一定是CBA癌淮√煞兀可能中途B進棧后又出棧了,最后就是BCA乳蓄。

3.隊列及其基本運算

隊列是指允許在一端(隊尾)進行插入咪橙,而在另一端(對頭)進行刪除的線性表。尾指針(Rear)指向隊尾元素虚倒,頭指針(Front)指向排頭元素的前一個位置(隊頭)美侦。

隊列是“先進先出”或“后進后出”的線性表。

隊列運算包括:

(1)入隊運算:從隊尾插入一個元素魂奥;

(2)退隊運算:從隊頭刪除一個元素菠剩。

image

可以理解為排隊的順序,先進先出捧弃。指定元素的前一個元素稱為前件赠叼,后一個元素稱為后件,頭和尾沒有前后件违霞。隊頭指針指向第一個元素的前一個位置嘴办,隊尾指針指向最后一個元素。算元素的個數就只需要用隊尾減去隊頭(不需要再加上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截驮,那就只能分一個叉,一層只有一個叉际度。

image

前序遍歷:ABDGHICEJF 中左右葵袭,從上到下挨個遍歷。

中序遍歷:GDIHBAEJCF 左中右乖菱,從左到右依次遍歷眶熬。前序的第一個結點是根結點,根結點前面的屬于二層左結點块请,后面的屬于二層右節(jié)點

后序遍歷:GIHDBJEFCA 左右中娜氏,從下到上挨個遍歷,后序的最后一個結點是根結點

大家可以根據以上的任意兩種遍歷方式畫出二叉樹并算出最后一種遍歷

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末墩新,一起剝皮案震驚了整個濱河市贸弥,隨后出現的幾起案子,更是在濱河造成了極大的恐慌海渊,老刑警劉巖绵疲,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異臣疑,居然都是意外死亡盔憨,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門讯沈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來郁岩,“玉大人,你說我怎么就攤上這事缺狠∥噬鳎” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵挤茄,是天一觀的道長如叼。 經常有香客問我,道長穷劈,這世上最難降的妖魔是什么笼恰? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮歇终,結果婚禮上社证,老公的妹妹穿的比我還像新娘。我一直安慰自己练湿,他們只是感情好猴仑,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般辽俗。 火紅的嫁衣襯著肌膚如雪疾渣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天崖飘,我揣著相機與錄音榴捡,去河邊找鬼。 笑死朱浴,一個胖子當著我的面吹牛吊圾,可吹牛的內容都是我干的。 我是一名探鬼主播翰蠢,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼项乒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了梁沧?” 一聲冷哼從身側響起檀何,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎廷支,沒想到半個月后频鉴,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡恋拍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年垛孔,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片施敢。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡周荐,死狀恐怖,靈堂內的尸體忽然破棺而出悯姊,到底是詐尸還是另有隱情羡藐,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布悯许,位于F島的核電站,受9級特大地震影響辉阶,放射性物質發(fā)生泄漏先壕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一谆甜、第九天 我趴在偏房一處隱蔽的房頂上張望垃僚。 院中可真熱鬧,春花似錦规辱、人聲如沸谆棺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽改淑。三九已至碍岔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朵夏,已是汗流浹背蔼啦。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留仰猖,地道東北人捏肢。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像饥侵,于是被迫代替她去往敵國和親鸵赫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容