一、樹
樹是n(n>=0)個結點的有限集合。如果n=0則稱為空樹;如果n>0,那麼有且僅有乙個根結點。樹是非線性的結構。
1)結點:乙個資料元素及指向其子樹的分支;
2)結點的度:結點擁有的子樹個數;
3)樹的度:樹中結點的度的最大值;
4)葉結點:度為0的樹;
5)子女:結點子樹的根;
6)父親:與子女結點直接聯絡的子女的上層;
7)兄弟:同一結點的子女;
8)堂兄弟:同層,但為不同結點的子女;
9)結點層次:從根開始,根為第一層,根的子女為第二層,以此類推;
10)樹的深度:書中結點的最大層數
11)森林:m(m>=0)棵互不相交的樹。
二、二叉樹
一棵二叉樹是結點的乙個有限集合,該集合或者為空,或者是由乙個根結點加上兩個分別稱為左子樹和右子樹的互不相交的二叉樹組成。
特點:每個結點之多只有兩棵子樹。
性質:
1、二叉樹的第i層上至多有2的n-1次方個結點(n>=1)
2、深度為k的二叉樹至多有2的k次方-1個檢點(k>=1)
3、二叉樹中,度為0的結點比度為2的結點個數多1
滿二叉樹——一棵深度為k且有2的k次方-1個結點的二叉樹。
完全二叉樹——若二叉樹的高度為h,除第h層外,其他各層的結點數都達到最大個數,第i層從右往左連續缺若干結點。
遍歷二叉樹:
1、前序遍歷
先訪問跟結點,然後遍歷左子樹,再遍歷右子樹。在遍歷左子樹和右子樹的時候,同樣先遍歷它的根幾點再依次遍歷左右子樹。
void preorder(btreenode root)
} 2、中序遍歷
先遍歷左子樹,然後訪問根結點,再遍歷右子樹。在遍歷左右子樹的時候,同樣先遍歷它們的左子樹再訪問根結點再遍歷右子樹。
void inorder(btreenode root)
} 3、後序遍歷
先遍歷左子樹,然後遍歷右子樹,再訪問根結點。在遍歷左右子樹的時候,同樣先遍歷它們的左子樹再訪問根結點,然後遍歷右子樹。
void postorder(btreenode root)
} 由此可知,到底是前序還是中序、後序遍歷,是指根結點的遍歷次序。
樹的遍歷:
1、按層次遍歷:
若樹不空,則自上而下、自左至右訪問樹中每個結點。
2、深度優先遍歷
(1)先根次序遍歷:
當樹非空時,訪問跟結點,再依次先根遍歷根的各子樹。
(2)後根次序遍歷:
當樹非空時,依次後根遍歷分的各子樹,在訪問根結點。
3、按對應二叉樹遍歷:
先將普通書轉換為對應的二叉樹,再按二叉樹的前序、中序、後序遍歷方式訪問各結點。
樹:先根次序遍歷 ====對應====> 二叉樹:前序遍歷
樹:後根次序遍歷 ====對應====> 二叉樹:中序遍歷
二叉樹 滿二叉樹與完全二叉樹
二叉樹 binary tree 是n n 0 個元素的有限集合,該集合為空或者為由乙個稱為 根 的元素及兩個不相交的 被分別稱為左子樹和右子樹的二叉樹組成 二叉樹的基本特點 每個結點最多有兩棵子樹 左子樹和右子樹是有順序的,且不可顛倒 圖一1 結點 二叉樹中的每乙個元素都稱為結點。通常二叉樹的許多名...
樹與二叉樹
樹是一類重要的非線性資料結構,是以分支關係定義的層次結構 定義 樹 tree 是n n 0 個結點的有限集t,其中 n 0時為空樹 n 0時,有且僅有乙個特定的結點,稱為樹的根 root 當n 1時,其餘結點可分為m m 0 個互不相交的有限集t1,t2,tm,其中每乙個集合本身又是一棵樹,稱為根的...
樹與二叉樹
建立 先序二叉樹,中序二叉樹,後序二叉樹。給定兩種遍歷序列 前序中序或後序中序 重塑二叉樹 遍歷 判斷乙個節點是否存在於二叉樹中 二叉樹的遍歷 先序,中序,後序 遞迴 非遞迴 層次遍歷 從上到下或從下到上列印 zigzag遍歷方式層次遍歷 二叉樹性質 二叉樹中葉子節點的個數 二叉樹第k層節點數目 二...