用二叉數表示有多個子女的樹:left[x]表示最左邊的兒子,right[x]右邊的兄弟。
10.4-1 畫出由下列域表示的、根在下標6處的二叉樹。
10.4-2 請寫出乙個o(n)時間的遞迴過程,在給定含n個結點的二叉樹後,它可以將樹中的每個結點的關鍵字輸出來。
void dfs(int x)
10.4-3 請寫出乙個o(n)時間的非遞迴過程,將給定的n結點二叉樹中每個結點的關鍵字輸出來。可以利用棧作為輔助資料結構。
void output(int rt)
}
10.4-4 對於任意的用左孩子、右兄弟表示儲存的、含n個結點的有根樹,寫出乙個o(n)時間過程來輸出每個結點的關鍵字。
void dfstree(int rt)
*10.4-5 寫出乙個o(n)時間的非遞迴過程,輸出給定的含n個結點的二叉樹中每個結點的關鍵字。要求只能使用除樹本身以外固定量的額外儲存空間,而且在過程中不能修改該樹,哪怕是暫時的。*10.4-6 在任意有根樹的左孩子,右兄弟表示中,每個結點有三個指標:left-child,right-sibling和parent。從任意結點出發,都可以在常數時間內到達其父結點;可以在與子女數成線性關係的時間內到達其孩子。說明如何在每個結點內用兩個指標和乙個布林值,在與子女數成線性關係的時間內到達其父親或所有孩子。 演算法導論10 4有根樹的表示習題
10.4 2 偽 x t.root tree key print x print x.key if x.left nil tree key print x.left if x.right nil tree key print x.right end 10.4 3 思路 前序遍歷思想 初始時把根元素壓...
C Primer 第10章 習題10 4
習題 10.4 舉例說明list vector deque map以及set型別分別適用的情況。list型別適用於需要在容器的中間位置插入和刪除元素的情況。例如 以無序方式讀入一系列學生資料,並按順序儲存。vector適用於需要隨機訪問元素的情況。例如 在一系列人員當中1 n,訪問第x個人的資訊。d...
《演算法導論》筆記 第2章
本章出現了全書第乙個演算法 插入排序。插入排序並不是最直觀的排序演算法,拿它做第乙個講解應該有其他的理由。通過插入排序的講解,偽 約定 迴圈不變式 演算法分析等最基礎的知識被帶了出來。此後又講了第二個演算法 合併排序,並引出了演算法設計中的兩種常見型別 增量法 incremental 和分治法 di...