前言
一、樹的定義及基本術語
1.樹的定義
2.基本術語
3.樹的性質
二、樹的表示(儲存結構)
樹形結構是一類重要的非線性結構。樹形結構是結點之間有分支,並且具有層次關係的結構,類似於大自然中的樹。
樹是一種非線性的資料結構,它是由n(n>=0)個有限結點組成乙個具有層次關係的集合。把它叫做樹是因
為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點:
①每個結點有零個或多個子結點;(每個結點有零個或多個後繼)
②沒有父結點的結點稱為根結點;(樹中有且只有乙個結點,沒有前驅,該節點為根結點)
③每乙個非根結點有且只有乙個父結點;(除根結點外,其餘結點有且只有乙個直接前驅)
④除了根結點外,每個子結點可以分為多個不相交的子樹 。
結點的度:乙個結點中包含的子樹的個數稱為結點的度,例如:a的度為2,b的度為3,h的度為0
樹的度:一棵樹中,最大的結點的度,稱為樹的度,例如:上圖樹的度為3
結點的層次:從根開始定義,根為第一層,根的子節點為第二層,依次類推
樹的深度或高度:樹中結點的最大層次,例如:上圖樹的高度為4
葉結點或終端結點:度為0的結點稱為葉結點。(當一棵樹中只有乙個結點,這個結點既是根結點也是葉結點)例如:上圖的d、f、g、h、i
非終端結點或分支節點:度不為0的結點。例如:b、c、e等
雙親結點或父結點:若乙個結點包含子結點,則這個結點稱為其子結點的父節點。例如:a是b、c的父節點
孩子結點或子結點:結點的子樹的根稱為該結點的孩子。例如:b、c是a的孩子
兄弟結點:具有相同父節點的結點互稱為兄弟結點:例如b、c是兄弟結點
堂兄弟結點:雙親在同一層的結點互稱為堂兄弟結點。例如f、g為堂兄弟結點
結點的祖先:從根到該結點所經分支上的所有結點。例如:a是所有結點的祖先
子孫:以某個結點為根的子樹中任一結點稱為該結點的子孫。例如:所有結點都是a的子孫
森林:由m(m>=0)棵互不相交的樹的集合稱為森林。
1.樹中的結點數等於所有結點的度數加1。
2.度為m的樹中第i層上至多有m^(i−1)個結點(i≥1)。
3.高度為h的m叉樹至多有(m^h-1)/(m-1)個結點
4.具有n個結點的m叉樹的最小高度為logm(n(m-1)+1)
樹結構相對線性表就比較複雜了,要儲存表示起來就比較麻煩了,實際中樹有很多種表示方式,如:雙親表示法,孩子表示法、孩子兄弟表示法等等。
1.順序儲存結構
2.鏈式儲存結構
孩子表示法:
孩子兄弟表示法演示:
**如下:
typedef int datatype;
//結點定義
資料結構與演算法的基本認識
資料結構 是相互之間存在一種或多種特定關係的資料元素的集合 資料 描述客觀事物的符號,能被計算機識別並操作的物件,能輸入到計算機中進行處理的符號集合 資料元素 組成資料的基本單位,通常作為整體處理,也稱為記錄 著眼點 資料項 乙個資料元素可以由若干個資料項組成 最小單位,不能再分割 資料物件 性質相...
資料結構樹的基本操作 資料結構 樹的基本操作
include include include gtree.h include linklist.h typedefstruct tag gtreenode gtreenode 樹的節點 struct tag gtreenode gtreedata data 節點自身資料 gtreenode par...
資料結構樹基本操作
本章內容 樹的結構定義 遞迴的三種遍歷 非遞迴的三種遍歷 層次遍歷 求深度 求特定結點以及測試的主函式。include include define maxsize 50 二叉樹的鏈式儲存 typedef struct btnode btnode,tree 訪問改結點數值 void visit tr...