分層次組織管理效率更高
資料管理基本操作:查詢
靜態查詢:陣列
方法1:順序查詢(哨兵值)o(n)
方法2:二分查詢(有序+連續儲存,left right mid,一般是向下取整)o(logn)
*二分查詢的啟示:判定樹
1.每個結點的查詢次數=該結點所在層數
2.查詢次數≤判定樹的深度
3.n個結點判定樹的深度=[log2n]+1
4.asl平均成功查詢次數=總次數/總元素數
動態查詢:有插入刪除,查詢樹
樹的定義:n個結點構成的有限集合,遞迴
n=0空樹,n>0非空樹
根結點root+互不相交的子樹subtree
除root外,每個結點有且僅有乙個父結點
n個結點的樹有n-1條邊(最小連通方式)
樹的術語:
結點的度degree(結點的子樹個數)、樹的度(所有結點最大的度數)
葉結點(度=0)、父結點、子結點、兄弟結點(同一父結點)
路徑和路徑長度(邊的個數)、祖先結點、子孫結點
結點層次level(根結點在1層,後續+1)、樹的深度/高度depth(最大層次)
樹的表示:
兒子-兄弟表示法(結構統一的鍊錶)
旋轉45度得到二叉樹(度=2)left right(最重要的樹結構)
定義:
二叉樹t:乙個有窮的結點集合;若不為空,由根結點、左子樹、右子樹組成
相當於度=2的樹,但有左右之分
五種基本形態;特殊形態:斜二叉樹(≈鍊錶)、完美/滿二叉樹、完全二叉樹(滿二叉樹的葉結點可以從右向左空缺,使編號連續)
性質:
(1)第i層的最大結點數=2^(i-1)
(2)深度=k,最大結點總數=2^k-1
(3)對非空二叉樹,葉結點數n0=度為2非葉結點數n2+1(可用向下/上的邊數證明)
操作:
判別是否空、建立、遍歷
儲存結構:
1.先序、中序、後序(序=根的順序,遞迴遍歷左右子樹)
遍歷過程中經過結點的路線一樣,只是訪問各結點的時機不同
每個結點有三次訪問時機-先中後
2.中序非遞迴遍歷(堆疊實現)
結點壓棧-遍歷左子樹-彈出結點並訪問-遍歷右子樹
*先序、後序也可實現
3.層序遍歷(上下-左右)
二叉樹遍歷本質:二維結構線性化
訪問左兒子後,需要儲存結構儲存暫時不訪問的結點:堆疊(父結點)/ 佇列(右兒子)
*層序遍歷的佇列實現:根結點入隊→結點出隊、訪問該結點、左右兒子入隊(迴圈)
應用:
例1:輸出葉結點
先序遍歷框架,增加判斷左右子樹是否均為空即可
例2:求二叉樹高度
後序遍歷框架,=左右子樹的最大高度+1(遞迴)
例3:二元運算表示式樹及其遍歷
運算數=葉結點,運算符號=非葉結點
先序-字首表示式
中序-中綴表示式(不準確,受運算符號優先順序影響,可通過加括號輸出解決)
後序-字尾表示式
例4:由兩種遍歷序列確定二叉樹
中序+先序/後序→確定唯一二叉樹,先+後不行(左右不明)
先序+中序:先序根結點→在中序中分解出左右子樹→對左右遞迴繼續分解
*先序=中序:無左子樹
數的同構:一棵樹可以通過若干次左右子樹互換變為另一棵(不可越層互換)
求解思路:
1.二叉樹表示:鍊錶/陣列(當做完全二叉樹),結構陣列(物理)=靜態鍊錶(思想)
2.建二叉樹:未出現過的編號=根結點
3.同構判別:特例+分類討論+遞迴(邏輯要嚴密,不能遺漏情況)
浙大資料結構與演算法慕課隨手記 第二講 線性結構
例 一元多項式及其運算 方法1 順序儲存直接表示 陣列,浪費空間 方法2 順序儲存非零項 結構陣列,係數,指數 二元組,按指數大小有序儲存 方法3 鍊錶儲存非零項 定義兩個資料域 多項式表示問題啟示 1.同乙個問題有不同表示 儲存方法 陣列or鍊錶 2.共性問題 有序線性序列的組織與管理 線性表 同...
2020秋冬慕課浙大資料結構期中考試及答案
考試時間1小時 一 判斷題 1 1所謂 迴圈佇列 是指用單向迴圈鍊錶或者迴圈陣列表示的佇列。2分 tf 答案 f 1 2在具有n個結點的單鏈表中,訪問結點和增加結點的時間複雜度分別對應為o 1 和o n 3分 tf 答案 f 1 3如果無向圖g必須進行兩次廣度優先搜尋才能訪問其所有頂點,則g一定有2...
《資料結構與演算法》 浙大MOOC)第1章 概論
include include include clock t start,stop double duration define maxn 10 多項式最大項數,即多項式階數 1 define maxk 1e7 被測函式最大重複呼叫次數 doublef1 int n,double a,double...