樹概念:
節點n1到nk的路徑:為節點n1、n2、...、nk的乙個序列,是的對於1<=i
路徑的長:路徑上邊的條數,如上面為k-1;
ni的深度:從根到ni的唯一路徑的長。根的深度為0;
ni的高度:從ni到一片葉子的最長路徑的長。樹葉的高度為0,一棵樹的高度等於根的高,(通常定義空樹的高為-1)。
二叉樹的節點宣告:
typedef struct bitnodebitnode,*bitree;
注:二叉樹的建立採用「先序遞迴」的方式。
注:先序非遞迴遍歷有三種方式:
第一種為根壓棧,迴圈{左孩子壓棧,右孩子壓棧};
第二種為先根壓棧,然後{左子樹中所有左孩子全部壓棧,然後再右孩子壓棧}。
中序非遞迴遍歷:兩種方法差不多。
後序非遞迴遍歷:
方法一:根壓棧,{左子樹所有左孩子壓棧,然後右子樹壓棧(但是根在左右子樹出棧後再出棧)};
方法二:雙棧法:棧s1做緩衝,棧s2先壓進s1出棧的根,再壓進s1出棧的右子樹,再壓進s1出棧的左子樹,這樣s2輸出時就為後序非遞迴遍歷。
包含了二叉樹的非遞迴層次遍歷。
二叉樹的遞迴層次遍歷:
輕鬆搞定面試中的二叉樹題目:
未完待續...
資料結構筆記 二叉樹及其實現 python
二叉樹是一種最簡單的樹形結構,其特點是樹中每個結點至多關聯到兩個後繼結點,也就是,乙個節點可以關聯到的結點可以為0,1,2,這也是二叉樹乙個節點度的定義,另乙個特點是結點關聯的後繼結點明確的分左右,一般有乙個根結點,然後根結點的左右後繼結點分別稱為根結點的左,右孩子,或者左,右關聯結點。二叉樹是結點...
二叉樹及其應用 二叉樹遍歷
給定二叉樹的廣義表表示,構造二叉樹並輸出二叉樹的四種遍歷順序。輸入說明 輸入僅一行,該行僅由 以及大小寫字元構成的二叉樹的廣義表表示,字串長度不超過100。輸出說明 在接下來的四行中依行輸出二叉樹的四種遍歷 輸入樣列 a b d,c e,f h 輸出樣列 abdcefh dbaecfh dbehfc...
二叉樹及其應用 二叉樹建立
給定二叉樹的資料型別如下 typedef char element struct node typedef struct node btnode typedef struct node btree 二叉樹建立i 完成btree create btree char s 函式,該函式由字串s建立一顆二叉...