實驗報告內容:
一、實驗目的、要求:
(1)熟練掌握二叉樹的二叉鍊錶儲存結構的建立、二叉樹的三種遍歷演算法以及基於遍歷的幾種操作的實現。
(2)編寫適當的主函式和相關函式,使實驗題目執行出正確結果。
(3)當場程式設計、除錯、編譯。
(4)程式具有一定的健壯性、可讀性,盡量簡潔。
(5)程式執行完成後分別存檔,上交實驗報告,要求寫出實驗體會
二、實驗內容:
(1)實驗題目
(2)主要函式的演算法設計思想
(3)程式清單
(3)測試資料、實驗結果及結論
(4)實驗體會(實驗中存在的問題、進一步的想法等)
1、第一道題:
(1)實驗題目
程式設計實現二叉樹的建立、遍歷以及基於遍歷的幾種基本操作。
1)採用二叉鍊錶儲存結構建立乙個二叉樹;
2)用遞迴方法實現二叉樹的三種遍歷演算法;
3)求二叉樹中葉子結點的個數、度為1的結點個數和度為2的結點個數;
4)求二叉樹的深度。
(2)主要函式的設計思想
求二叉樹葉子結點數函式的設計思想
void
countleaf
(bitree t,
int&count)
}
求二叉樹深度函式的設計思想
int
depth
(bitree t)
}
(3)程式清單
#include
"iostream.h"
#include
"stdio.h"
#include
"stdlib.h"
#define ok 1
#define error 0
#define overflow -2
#define null 0
typedef
char telemtype;
typedef
int status;
typedef
struct bitnode bitnode,
*bitree;
//以下是建立二叉樹儲存結構
status createbitree
(bitree &t)
return ok;
}//creatbitree
// 先序遍歷二叉樹
void
preorder
(bitree t)
}// 中序遍歷二叉樹
void
inorder
(bitree t)
}// 後序遍歷二叉樹
void
postorder
(bitree t)
}//求二叉樹的葉子結點數
void
countleaf
(bitree t,
int&count)
}//求二叉樹中度為1的結點數
void
countbt1
(bitree t,
int&m)
}//求二叉樹度為2的結點數
void
countbt2
(bitree t,
int&n)
}//求二叉樹的深度
intdepth
(bitree t)
}// 求位於先序序列中第k個位置的結點的值
void
get_preseq
(bitree t,
int k,
int&c)
get_preseq
(t->lchild,k,c)
;//在左子樹中查詢
get_preseq
(t->rchild,k,c)
;//在右子樹中查詢}}
intmain()
break
;case3:
if(!t)printf
("\n未建立樹,請先建樹!\n");
else
break
;case4:
if(!t)printf
("\n未建立樹,請先建樹!\n");
else
break
;case5:
if(!t)printf
("\n未建立樹,請先建樹!\n");
else
break
;default
:printf
("請確認選擇項:\n");
}//end switch
}//end while
return0;
}
(4)測試資料、實驗結果及結論
C語言 資料結構 二叉樹
一 樹的概念及結構 1.樹是一種非線性的資料結構,它是由n n 0 個有限結點組成乙個具有層次關係的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,...
資料結構 二叉樹(c語言)
一下 是二叉樹的相關 包括二叉樹的根據前序遍歷建立二叉樹。根據前序遍歷 中序遍歷與後續遍歷依次查詢二叉樹的各個節點。include 定義二叉樹節點資料型別 typedef struct bitnode bitnode,bitree bitree為指向bitnode這種結構的指標 前序構造二叉樹函式 ...
資料結構之二叉樹 C語言
二叉樹是一種依託指標建立的資料結構。二叉樹結構體中包含資料域和兩個指標,乙個指向左樹,乙個指向右樹。開始的第乙個結點稱為二叉樹的根節點,需要建立乙個指向根節點的指標,這樣才能訪問整棵二叉樹。我所知的有兩種建立方式。第一種是設個函式的返回型別為二叉樹結點結構體。例如 typedef struct tr...