二叉樹的建立與基本操作

2021-08-14 10:19:21 字數 1731 閱讀 7051

編寫程式實現二叉樹的如下操作:

1) 建立二叉鍊錶

2) 二叉樹的先序、中序、後序遍歷

3) 求解二叉樹的葉子結點個

4) 將二叉樹中所有結點的左、右子樹相互交換

輸入:

擴充套件二叉樹先序序列:ab#d##ce###。其中#代表空指標。

輸出:

二叉樹的凹入表示

二叉樹的先序序列、中序序列、後序序列

二叉樹葉子結點個數

左、右子樹相互交換後的二叉樹的凹入表示

左、右子樹相互交換後的二叉樹的先序序列、中序序列、後序序列。

說明:

在輸出凹入表示的二叉樹時,先輸出根結點,然後依次輸出左右子樹,上下層結點之間相隔 3 個空格。

測試用例 1

以文字方式顯示

ab#d##ce###↵

以文字方式顯示

bitree↵

a↵b↵

d↵c↵

e↵pre_sequence  : abdce↵

in_sequence   : bdaec↵

post_sequence : dbeca↵

number of leaf: 2↵

a↵c↵

e↵b↵

d↵pre_sequence  : acebd↵

in_sequence   : ceadb↵

post_sequence : ecdba↵ 1秒

64m0

測試用例 2

以文字方式顯示

abd##e##cf##g##↵

以文字方式顯示

bitree↵

a↵b↵

d↵e↵

c↵f↵

g↵pre_sequence  : abdecfg↵

in_sequence   : dbeafcg↵

post_sequence : debfgca↵

number of leaf: 4↵

a↵c↵

g↵f↵

b↵e↵

d↵pre_sequence  : acgfbed↵

in_sequence   : gcfaebd↵

post_sequence : gfcedba↵ 1秒

64m0

#include#includestruct btreenode 

; typedef struct btreenode *ptrnode;

int numlef;

void creat_btree(ptrnode*proot) //用二級指標建立二叉樹 }

ptrnode creat_btree(ptrnode proot) //用返回值建立二叉樹(沒用二級指標)

return proot; }

void inorder(ptrnode rt) }

void preorder(ptrnode rt) }

void postorder(ptrnode rt) }

void printline(char c, int num)

printf("%c\n", c); }

void listtree(ptrnode rt, int depth) }

void swap(ptrnode rt)

} } int main()

二叉樹基本操作 二叉樹的建立與遞迴遍歷

建立的二叉樹如下 來構建上圖的二叉樹 詳細 如下 include using namespace std typedef char datatype 二叉樹的左右鏈表示,也叫做二叉鍊錶表示 typedef struct node node typedef node btree btree precr...

樹與二叉樹的基本操作

二叉樹的鏈式儲存結構 typedef int elemtype typedef struct bitnode bitnode,bitree 統計二叉樹中度為0的結點個數 intnodedegree 0 bitree bt else return0 統計二叉樹中度為1的結點個數 intnodedegr...

二叉樹的建立及其基本操作

實驗內容 1 按照前序次序建立一棵二叉樹 2 用前 中 後序遞迴遍歷的方法遍歷二叉樹 3 求二叉樹的深度 4 求二叉樹的所有結點數 實驗基本要求 掌握二叉樹的鏈式儲存結構的建立方法和對二叉樹的各種操作演算法 include include define maxsize 100 typedef cha...