樹狀結構 Tree Structure chapter 7 德明科技大學資訊科技系.

Slides:



Advertisements
Similar presentations
平衡飲食保健強身 整理至簡體版,作者不可考。內容為 參加國際健康會議所發表的心得。. 人應該活多久 有人告訴我五六十歲就差不多了。 我在醫院工作四十年了,絕大部分病死的人是 很痛苦的。 我在美國遇見張學良,一進門見到他就大吃ㄧ驚, 他眼不花,耳不聾,很多人問他:少帥,您怎 麼能活這麼久? 他回答:不是我活的久,是他們活的太短了。
Advertisements

办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
联合国提出个口号:“千万不要死于无知” 保健的三个里程碑 平衡饮食 有氧运动 心理状态.
報告書名:父母會傷人 班級:二技幼四甲 姓名:吳婉如 學號:1A2I0034 指導老師:高家斌
平衡飲食保健強身.
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
总结-图 基础知识 基本方法 2017年3月6日 西南石油大学..
媽,我們真的不一樣 青少年期與中年期 老師: 趙品淳老師 組員: 胡珮玟4A1I0006 馬菀謙4A1I0040
第7章 樹與二元樹 (Trees and Binary Trees)
動畫與遊戲設計 Data structure and artificial intelligent
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
第6章 二叉树和树 前面的章节主要讨论的是线性结构,二叉树和树属于非线性的结构。遍历非线性结构比线性结构要麻烦。
班級:二幼三甲 姓名:郭小瑄 、 詹淑評 學號:1A2I0029 、1A2I0025
财务管理.
指導老師:陳韻如 姓名:吳宜珊 學號:4A0I0911 班級:幼保二乙
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
傳統童玩遊戲創新 組別:第八組 班級:幼保二甲 組員: 4A0I0005柯舒涵 4A0I0011謝孟真
计算机软件技术基础 数据结构与算法(4).
第5章 树( Tree )和二叉树 5.1 树的基本概念 5.2 二叉树 5.3 遍历二叉树和线索二叉树 5.4 树和森林
第五章 树 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
政府扶持资金通览 技术改造篇.
資料結構與C++程式設計進階 資料結構概論 講師:林業峻 CSIE, NTU 6/ 7, 2010.
Chap4 Tree.
Tree(樹) 什麼是「樹」? 「樹」的範例 「樹」的定義 「樹」的表示法.
本科生医保资料的提交.
Chapter 5 Tree & Binary Tree
Chap5 Graph.
樹狀結構 陳怡芬 2018/11/16 北一女中資訊專題研究.
Chapter8 Binary and Other Trees
講師:郭育倫 第3章 基本資料結構 講師:郭育倫
Chapter 6 Graph Chang Chi-Chung
統計圖表的製作.
第12章 樹狀搜尋結構 (Search Trees)
4 堆疊與佇列 4.1 前言 四種基本的資料結構 (可儲存資料的容器) 陣列 (Array)、串列(List): 最基本
第十一章 Heap 結構.
演算法與資料結構 製作單位: 高雄市立高雄中學.
第六章 树和二叉树.
第 七 章 樹狀結構 課程名稱:資料結構 授課老師:________ 2019/1/1.
第 六 章 鏈結串列(Link List) 課程名稱:資料結構 授課老師:________ 2019/1/2.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
Data Structure.
二叉树和其他树 (Binary and other trees)
第六章 樹狀結構 T r e e 版權屬作者所有,非經作者 同意不得用於教學以外用途.
樹 2 Michael Tsai 2013/3/26.
感謝同學們在加分題建議. 我會好好研讀+反省~
B+ Tree.
Tree & Binary Tree.
書名 Java於資料結構與演算法之實習應用
二叉树的遍历.
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
第7章 樹與二元樹(Trees and Binary Trees)
資料結構使用Java 第9章 樹(Tree).
Chapter 6 樹狀結構.
畢業資格審查系統 操作步驟說明.
106二專班第二次作業 2017/11/27.
Disjoint Sets Michael Tsai 2013/05/14.
新制退休實務計算說明- 現職人員退休範例說明
進階資料結構(2) Disjoint Sets
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
Data Structure.
第10章 二元搜尋樹 (Binary Search Tree)
JAVA 程式設計與資料結構 第十七章 Tree.
JAVA 程式設計與資料結構 第二十一章 Graph.
Presentation transcript:

樹狀結構 Tree Structure chapter 7 德明科技大學資訊科技系

樹狀結構 陣列與鏈結串列都是有序串列,資料以一個線性的順序串起;但是很多情形下,資料以分支的方式組成 樹狀(tree)結構 一個公司組織架構,總經理下有數個部門,每個部門又分成數個組 各部門是平行沒有管轄關係 樹狀(tree)結構 像樹一樣有許多分支,描述資料之間的關係 德明科技大學資訊科技系

樹狀結構 樹狀結構是由一個或多個節點組合而成的有限集合,它必須要滿足以下兩點: Tree不可以是空集合,至少有一個節點稱為root(根節點) 根節點包含T1 , T2,....., Tn 的子樹 ( subtree ) 德明科技大學資訊科技系

樹狀結構 樹狀結構中不可以含有迴圈、重邊或不相連的情況 以下的例子為非樹狀結構(稱為圖形) 德明科技大學資訊科技系

樹狀結構的專有術語 樹根(root):每一棵樹的最上層的節點,稱為樹根,而A就是為這棵樹的樹根 節點(node):樹的節點代表著某項資料,A、B…、L都是節點 子樹(subtree):把A去掉之後,就剩下以B、C及D為樹根的三棵子樹 樹林(forest):是由N≧0個互斥子樹的集合。把樹根A去掉之後,剩下的部分就叫樹林 階度(level):表示節點的階層位置 樹根A的階度是1 B的階度是2 K的階度是4。 德明科技大學資訊科技系

樹狀結構的專有術語 高度(height):一棵樹中節點的最大階度就是高度, 而此樹的高度為4 父節點(parent):每一個節點的上一個節點就是父節點,例如B節點的父節點就是A 子節點(children):每一個節點的下一個節點就是子節點,D的子節點就是 H、I及J 分支度(degree):一個節點的子樹之個數稱為該節點的分支度,例如: A的分支度為3, B的分支度是2 終點節點(terminal node): 分支度為0的節點, 又稱樹葉節點,共有 K、F、G、H、I、L 德明科技大學資訊科技系

二元樹(Binary tree) 二元樹是一般樹狀結構的特例 定義: 二元樹可以是空集合,若不為空,則: 具有根節點(Root)及左子樹和右子樹。 左、右子樹亦是二元樹。 簡單的說,二元樹最多只能有兩個子節點,就是分支度小於或等於2 德明科技大學資訊科技系

二元樹特性 1. 在二元樹的第 i 階度(Level)上節點個數最多為 2 i-1 , i >= 1 德明科技大學資訊科技系

二元樹特性 2. 在高度為 h 的二元樹中節點個數最多為 2h -1, h >= 1 德明科技大學資訊科技系

二元樹特性 3. 若一樹 T 的總節點數(Node)為 V,總邊(Edge)數為 E,則 V=E+1 4. 一棵二元樹,若 n0 為樹葉節點的數量,n2 為分支度為 2 的節點數 量,則n0 = n2 + 1 德明科技大學資訊科技系

二元樹特性 二元樹的應用與變化都非常多樣 常見的特殊二元樹種類有 斜曲(skew)二元樹 嚴格(strict)二元樹 完滿(full)二元樹 完整(complete)二元樹 德明科技大學資訊科技系

斜曲二元樹 Skew binary tree 當一個二元樹每個節點都 只有左子樹:左斜曲 只有右子樹:右斜曲 德明科技大學資訊科技系

嚴格二元樹 二元樹內每個非樹葉節點都有兩個子結點 也就是二元樹內,每個節點的分支度只有 0(代表樹葉)與 2(代表內部節點)兩種 德明科技大學資訊科技系

完滿二元樹 Full Binary Tree 一個高度為 h 的完滿二元樹即是高度為 h 且具 2h -1 個節點的二元樹 德明科技大學資訊科技系

完整二元樹 一個二元樹有 n 個節點且高度為 h ,若且唯若,滿足: 節點編號與高度h的完滿二元樹之前n個節點編號一致 2 h-1 -1 < n < 2h -1 節點編號與高度h的完滿二元樹之前n個節點編號一致 德明科技大學資訊科技系

完整二元樹 德明科技大學資訊科技系

二元樹表示法 二元樹可以用陣列與鏈結串列表示 以陣列(Array)表示 以鏈結串列(Linked List)表示 適合完滿二元樹 不適合斜曲樹 容易追蹤(Traversal) 以鏈結串列(Linked List)表示 適合處理斜曲樹 但Link空間約浪費一半 德明科技大學資訊科技系

以陣列表示二元樹 將二元樹想像成一個完滿二元樹,並使用一維陣列建立二元樹的表示方法及索引值的配置 德明科技大學資訊科技系

以陣列表示二元樹 假設陣列int A[n]; 優點 缺點 A[0]: root,A[1], A[2]: 第一層,以此類推 A[i]的左子節點是A[2*i+1],左子節點是A[2*i+2] A[i]的父節點是A[i/2] 優點 非常適合完整二元樹的應用 可以計算方式取得節點的左右子節點 不必另外浪費空間紀錄左右子節點 缺點 非完整二元樹時很容易造成空間浪費 德明科技大學資訊科技系

以鏈結串列表示二元樹 使用動態記憶體配置來建立二元樹,類似結構陣列表示法的節點結構,只是成員變數改成兩個指向左和右子樹的指標 德明科技大學資訊科技系

德明科技大學資訊科技系

以鏈結串列表示二元樹 優點 缺點 新增與刪除節點容易 適合一般二元樹的表示 不易找到父節點 必須有一半左有的空間浪費在左右子節點的鏈結上 假設共n個節點,因此會有2n個鏈結 但是只有n-1個節點被鏈結指到 德明科技大學資訊科技系

二元樹的追蹤 Binary Tree Traversal 追蹤樹中的每一個節點,且每個節點恰好被尋訪一次 中序 In-order(左、中、右) 前序 Pre-order(中、左、右) 後序 Post-order(左、右、中) 德明科技大學資訊科技系

中序追蹤 又稱中序走訪 左子樹→樹根→右子樹 沿樹的左子樹一直往下,直到無法前進,再後退回父節點,再往右子樹一直往下 德明科技大學資訊科技系

中序追蹤 中序追蹤的遞迴函數是Inorder(),指標T是二元樹指標,中序追蹤的遞迴操作步驟如下所示: Step 1:檢查是否可以繼續前進, 即指標T不等於NULL。 Step 2:如果可以前進,其處理方式如下所示: (1) 遞迴呼叫Inorder(T→Lchild)往左走 (2) 處理目前的節點(Print (T->Data)) (3) 遞迴呼叫Inorder(T→Rchild)往右走 德明科技大學資訊科技系

德明科技大學資訊科技系

前序追蹤 又稱前序走訪 樹根→左子樹→右子樹 從根節點開始處理,根節點處理完成之後,再往左子樹走,直到無法前進,再處理右子樹 德明科技大學資訊科技系

前序追蹤 前序追蹤的遞迴函數是Preorder(),傳入的參數是樹指標T,前序追蹤的遞迴操作如下所示: Step 1:先檢查是否已經到達葉節點, 也就是指標T等於NULL。 Step 2:如果不是葉節點表示可以繼續走,此時的處理方式如下所示: (1) 處理目前的節點(Print (T->Data))。 (2) 遞迴呼叫Preorder(T→Lchild)往左走。 (3) 遞迴呼叫Preorder(T→Rchild)往右走。 德明科技大學資訊科技系

德明科技大學資訊科技系

後序追蹤 又稱後序走訪 左子樹→右子樹→樹根 沿樹的左子樹一直往下完成之後,再往右子樹一直往下,直到無法前進,再後退回父節點 德明科技大學資訊科技系

後序追蹤 後序追蹤的遞迴函數是Postorder(),傳入的參數是樹指標T,後序追蹤的遞迴操作如下所示: Step 1: 先檢查是否已經到達葉節點, 就是指標T等於NULL。 Step 2: 如果不是葉節點表示可以繼續走,此時的處理方式如下所示: (1) 遞迴呼叫Postorder(T→Lchild)往左走。 (2) 遞迴呼叫Postorder(T→Rchild)往右走。 (3) 處理目前的節點(Print (T->Data))。 德明科技大學資訊科技系

德明科技大學資訊科技系

隨堂練習 德明科技大學資訊科技系

二元搜尋樹 Binary Search Tree 【定義】 二元搜尋樹是一種二元樹,它可以為空,若不為空,則必須要滿足以下條件: 1. 若左子樹不為空,則左子樹的鍵值均須要小於樹根的鍵值。 2. 若右子樹不為空,則右子樹的鍵值均須要大於樹根的鍵值。 3. 左子樹與右子樹必須也要保持二元搜尋樹。 德明科技大學資訊科技系

二元搜尋樹 德明科技大學資訊科技系

二元搜尋樹 二元搜尋樹的運作包含 二元搜尋樹的各種運作方法大致相同,只有刪除節點比較特殊 建立二元搜尋樹 搜尋某一值是否存在 插入節點 插入節點x,就是尋找x應該在樹內哪個位置 建立二元搜尋樹就是每個值都以插入節點方式運作 德明科技大學資訊科技系

建立二元搜尋樹 請依照下列資料來建立二元搜尋樹 28, 23, 33, 41, 22, 23+ 德明科技大學資訊科技系

德明科技大學資訊科技系

德明科技大學資訊科技系

二元搜尋樹插入元素 方法與建立二元搜尋樹時相同步驟 例如在下圖中要插入27元素 將27與樹根做比較,結果比28小,所以再和其他左子樹相比(27>23),所以再往下和其他右子樹相比(27>23+),最後,置於右子樹。 德明科技大學資訊科技系

二元搜尋樹刪除元素 刪除一個元素時,必須結果仍能要符合二元搜尋樹規則 如果是刪除樹葉節點時,則直接刪除即可 如果是刪除非樹葉節點時,則先從其右子樹往下找大於且最接近欲刪除的鍵值來取代它,即可刪除此鍵值 德明科技大學資訊科技系

二元搜尋樹刪除元素 德明科技大學資訊科技系

練習 對於下面的二元搜尋樹,請依照下列動作的順序進行 插入42, 插入48, 插入58, 畫出此時樹的結果 延續(1), 插入35, 刪除21, 畫出此時樹的結果 德明科技大學資訊科技系