名詞解釋
(1)每個元素稱為節點
(2)有乙個特定的節點被稱為根節點或樹根
(3)除根節點外的其餘資料元素被分為m個互不相交的集合t1,t2,t3.....tm-1,其中每乙個集合ti本身也是乙個樹,被稱作原樹的子樹
節點的度:乙個節點含有子樹的個數稱為該節點的度
葉節點或終端節點:度為0的節點稱為葉節點
非終端節點或分支節點:度不為0的節點
雙親結點或父節點:若乙個節點含有子節點,則這個節點稱為其子節點的乙個父節點
孩子節點或子節點:乙個節點含有的子樹的根節點稱為該節點的子節點
兄弟節點:具有相同父節點的節點互稱為兄弟節點
樹的度:一棵樹中,最大的節點的度稱為樹的度
節點的層次:從根開始定義起,根為第一層,根的子節點為第二層,以此類推
樹的高度或深度:樹中節點的最大層次
森林:由m顆互不相交的樹的集合稱為森林
二叉樹:二叉樹是每個結點最多有兩個子樹的有序樹。通常子樹的根被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用作二叉查詢樹和二叉堆或是二叉排序樹。二叉樹的每個結點至多只有二棵子樹(不存在度大於2的結點),二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第i層至多有2的 i -1次方個結點;深度為k的二叉樹至多有2^(k) -1個結點;對任何一棵二叉樹t,如果其終端結點數(即葉子結點數)為n0,度為2的結點數為n2,則n0 = n2 + 1。
二叉樹的鏈式儲存結構:
名詞解釋
(1)每個元素稱為節點
(2)有乙個特定的節點被稱為根節點或樹根
(3)除根節點外的其餘資料元素被分為m個互不相交的集合t1,t2,t3.....tm-1,其中每乙個集合ti本身也是乙個樹,被稱作原樹的子樹
節點的度:乙個節點含有子樹的個數稱為該節點的度
葉節點或終端節點:度為0的節點稱為葉節點
非終端節點或分支節點:度不為0的節點
雙親結點或父節點:若乙個節點含有子節點,則這個節點稱為其子節點的乙個父節點
孩子節點或子節點:乙個節點含有的子樹的根節點稱為該節點的子節點
兄弟節點:具有相同父節點的節點互稱為兄弟節點
樹的度:一棵樹中,最大的節點的度稱為樹的度
節點的層次:從根開始定義起,根為第一層,根的子節點為第二層,以此類推
樹的高度或深度:樹中節點的最大層次
森林:由m顆互不相交的樹的集合稱為森林
二叉樹:二叉樹是每個結點最多有兩個子樹的有序樹。通常子樹的根被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用作二叉查詢樹和二叉堆或是二叉排序樹。二叉樹的每個結點至多只有二棵子樹(不存在度大於2的結點),二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第i層至多有2的 i -1次方個結點;深度為k的二叉樹至多有2^(k) -1個結點;對任何一棵二叉樹t,如果其終端結點數(即葉子結點數)為n0,度為2的結點數為n2,則n0 = n2 + 1。
二叉樹的鏈式儲存結構:
typedef struct bitnodebitnode, *bitree;
二叉樹的先序建立(遞迴):
void createbitree(bitree &t)
else
輸出:
void visit(bitree &t)
}
先序遍歷:
首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左、右子樹時,仍然先訪問根結點,
然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。
例如,下圖所示二叉樹的遍歷結果是:abdecf
void preorder(bitree &t)
}
中序遍歷:
中序遍歷首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。在遍歷左、右子樹時,仍然先遍歷左子樹,再訪問根結點,最後遍歷右子樹。
如右圖所示
二叉樹中序遍歷結果:dbeafc
void inorder(bitree &t)
}
後序遍歷:
後序遍歷先遍歷左子樹,然後遍歷右子樹,最後訪問根節點,在遍歷左子樹、右子樹時,仍然先遍歷左子樹,然後遍歷右子樹,最後訪問根節點
如右圖所示
二叉樹中序遍歷結果:debfca
void postorder(bitree t)
}
樹 先序中序後序遍歷
題目分析 題目描述 description 求一棵二叉樹的前序遍歷,中序遍歷和後序遍歷 輸入描述 input description 第一行乙個整數n,表示這棵樹的節點個數。接下來n行每行2個整數l和r。第i行的兩個整數li和ri代表編號為i的節點的左兒子編號和右兒子編號。輸出描述 output d...
二叉樹先序遍歷 中序遍歷 後序遍歷
輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...
二叉樹先序遍歷 後序遍歷 中序遍歷
從根部 a 開始,然後開始遍歷左子樹,直接找到 b 檢視 b 有沒有左子樹,有 d,再檢視 d 有沒有子樹,沒有,d 已經是葉子,所以第二個是 d。倒回去,取中 b,第三個數是 b。檢視 b 有沒有右子樹,有 e 檢視 e 有沒有子樹,有 g 左 h 右 所有後面三個數是 egh 先查左子樹,存在繼...