前言
一、二叉樹的定義
1.定義
2.特點
二、二叉樹結構
1.二叉樹的五種基本形態
2.特殊的二叉樹
1.斜樹
2.滿二叉樹
3.完全二叉樹
三、二叉樹的性質
四、二叉樹的儲存結構
順序儲存
鏈式儲存
之前在部落格【資料結構】樹的基本認識中已經介紹了樹的基本的概念,也知道了樹的結構其實是多種多樣,但其中二叉樹是最基礎,最常用的一種結構。
二叉樹是n(n≥0)個結點的有限集合:
① 或者為空二叉樹,即n=0。
② 或者由乙個根結點和兩個互不相交的被稱為根的左子樹 和右子樹組成。左子樹和右子樹又分別是一棵二叉樹。
① 每個結點最多有兩棵子樹,即二叉樹不存在度大於2的結點。
② 二叉樹的子樹有左右之分,其子樹的次序不能顛倒。
①左斜樹:所有的結點只有左子樹
②右斜樹:所有的結點只有右子樹
特點:每層只有乙個結點,結點的個數等於二叉樹的深度
定義:乙個二叉樹,如果每乙個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。也就是說,如果乙個二叉樹的層數為k,且結點總數是(2^k) -1 ,則它就是滿二叉樹。
特點:①所有的非終端結點都存在左右子樹,並且所有的葉子結點都在最下面一層
②非葉子結點度一定為2
③同一深度的二叉樹中,滿二叉樹的結點數最多,葉子結點數最多
定義:對一棵樹具有n個結點的二叉樹按層次編號,當且僅當其每乙個結點都與同深度的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹。 要注意的是滿二叉樹是一種特殊的完全二叉樹。
特點:①葉子結點只能出現在最下面兩層
②最下層的葉子結點一定集中於左部連續位置
③如果結點的度為1,則該結點只有左孩子,即不可能存在只有右孩子的情況
④相同結點數的二叉樹中,完全二叉樹的深度最小
二叉樹一般可以使用兩種結構儲存,一種順序結構,一種鏈式結構
鍊錶結點:每個結點包含乙個資料域和兩個指標域
二叉鏈和三叉鏈
二叉鍊錶和三叉鍊錶結點**如下(示例):
// 二叉鏈
struct binarytreenode
// 三叉鏈
struct binarytreenode
;
資料結構(二叉樹) 二叉樹的建立 儲存 遍歷
建立二叉樹,並通過呼叫函式,輸出先序遍歷 中序遍歷與後序遍歷的結果 include include define true 1 define false 0 define ok 1 define error 0 datatype 是二叉樹資料元素型別,此程式定義為char型 typedef char...
資料結構 順序儲存二叉樹
include iostream using namespace std define max node size 100 二叉樹的最大節點數 typedef char sqbitree max node size 1 0號單元節點個數 建立二叉樹 void creat tree sqbitree ...
資料結構 樹和二叉樹
第一節 二叉樹的定義與基本操作 定義 我們把滿足以下兩個條件的樹型結構叫做二叉樹 binary tree 1 每個結點的度都不大於2 2 每個結點的孩子結點次序不能任意顛倒。由定義得出 二叉樹的每個結點只能含有0 1或2個孩子,且有左右之分。1 二叉樹的五種基本形態 2 二叉樹性質 性質1 二叉樹第...