二叉樹(Binary Tree)是n(n>=0)個結點的有限集合,該集合或者爲空集(稱爲空二叉樹),或者由一個根結點和兩顆互不相交的、分別稱爲根結點的左子樹和右子樹的二叉樹組成。spa
# 空二叉樹。
# 只有一個根結點。
# 根結點只有左子樹。
# 根結點只有又子樹。
# 根結點既有左子樹又有右子樹。
三個結點的二叉樹有五種形態:
特殊的二叉樹
# 斜樹:全部的結點都只有左子樹的二叉樹叫左斜樹。全部結點都是隻有右子樹的二叉樹叫右斜樹。這二者統稱爲斜樹。
# 滿二叉樹:在一棵二叉樹中,若是全部分支結點都存在左子樹和右子樹,而且全部葉子都在同一層上,這樣的二叉樹稱爲滿二叉樹。
滿二叉樹的特色有:
# 徹底二叉樹:對一棵具備n個結點的二叉樹按層序編號,若是編號爲i(1<i<=n)的結點與一樣深度的滿二叉樹中編號爲i的結點在二叉樹中位置徹底相同,則這棵二叉樹稱爲徹底二叉樹。
徹底二叉樹的圖
二叉樹的性質
二叉樹的順序存儲結構
二叉鏈表:二叉樹每一個結點最多有兩個孩子,因此爲它設計一個數據域和兩個指針域,咱們稱這樣的鏈表叫作二叉鏈表。
二叉樹的遍歷(traversing binary tree)是指從根結點出發,按照某種次序依次訪問二叉樹中全部結點,使得每一個結點被訪問一次且僅被訪問一次。
二叉樹的遍歷方法
# 前序遍歷:規則是若二叉樹爲空,則空操做返回,不然先訪問根結點,而後前序遍歷左子樹,再前序遍歷又子樹。如圖6-8-2所示,遍歷的順序爲:ABDGHCEIF
# 中序遍歷:規則是若樹爲空,則空操做返回,不然從根結點開始(注意並非先訪問根結點),中序遍歷根節點的左子樹,而後是訪問根結點,最後中序遍歷右子樹。若是6-9-3所示,遍歷的順序爲:GDHBAEICF。
#
後序遍歷:
規則是若樹爲空,則空操做返回,不然從左到右先葉子後結點的方式遍歷訪問左右子樹,最後是訪問根節點。若是6-8-4所示,遍歷的順序爲:GHDBIEFCA。
# 層序遍歷:規則是若樹爲空,則空操做返回,不然從樹的第一層,也就是根結點開始訪問,從上而下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問。如圖6-8-5所示,遍歷的順序爲ABCDEFGHI。