#includeusing namespace std;
const int maxsize=100; //樹最大規模為100
class tree
void leveroder();//層序輸出
void parch();//輸出結點的雙親、孩子資訊
void leaf();//輸出葉子資訊
};
tree::tree(char a,int n)
{ if(n>maxsize||n<1) throw"錯誤"; //排除溢位問題
for(int i=0;i=1) //排除結點i無雙親
cout<
cout<
1、熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現;
2、掌握樹的順序結構的實現;
3、學會運用樹的知識解決實際問題。
自己確定乙個二叉樹(樹結點型別、數目和結構自定)利用順序結構方法儲存。實現樹的構造,並完成:
1)層序輸出結點資料;
2)以合理的格式,輸出各個結點和雙親、孩子結點資訊;
3)輸出所有的葉子結點資訊;
4)分析你的演算法對於給定的二叉樹的儲存效率。
1、依據實驗內容,先確定具體的二叉樹,並說明結點的資料據型別;
2、設計具體的演算法;
3、寫出完整程式;
4、總結、執行結果和分析演算法效率。
5、總體收穫和不足,疑問等。
(1)、截圖:
(2)儲存效率分析:
本實驗我採取的是二叉樹的順序儲存結構實現,該樹的結構模型如下:
該二叉樹共開闢了九個指標,即空間,但有效資料只有六個,也就是說該二叉樹的有效利用空間為6。
首先,個人對樹和二叉樹的順序儲存結構的實現還不是很熟悉,感覺和順序表的結構有些相同。於是嘗試著根據順序表的結構實現來修改操作,但在其過程中發現還是會遇到許多錯誤的語句,也可以說沒有真正理解到樹和二叉樹的結構規律。雖然單從順序表出發沒能將程式執行成功,但也在嘗試操作和修改的過程中發現兩者之間也有著一定的相似點,還是有利於對樹和二叉樹的理解。
另外,也發現層序遍歷在樹和二叉樹的幾種遍歷方法中較簡單,或者說自己較為了解掌握的,因為這在利用陣列儲存資料,直接利用陣列下標的自加一迴圈即可以實現。但是也有一些容易混亂和出錯的地方,比如在輸出結點雙親和孩子以及葉子結點等情況,所應該滿足的條件的表達。
總體上來說,實驗過程不是很順利,但是執行成功之後自己認真的分析和理解基本可以理解整個實驗和程式的步驟和實現過程。
實驗 5 樹和二叉樹的實驗 1
實驗 5 樹和二叉樹的實驗 1 一 實驗目的 1 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現 2 掌握樹的順序結構的實現 3 學會運用樹的知識解決實際問題 二 實驗內容 自己確定乙個二叉樹 樹結點型別 數目和結構自定 利用順序結構方法儲存。實 現樹的構造,並完成 1 層序輸出結點資料...
實驗 4 樹和二叉樹的實驗 1
1 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現 2 掌握樹的順序結構的實現 3 學會運用樹的知識解決實際問題。二 實驗內容 自己確定乙個二叉樹 樹結點型別 數目和結構自定 利用順序結構方法儲存。實現樹的構造,並完成 1 層序輸出結點資料 2 以合理的格式,輸出各個結點和雙親 孩子結點...
實驗五 樹和二叉樹實驗
三 實驗內容 1.自己設計乙個二叉樹,深度最少為4,請遞迴演算法分別用前序 中序 後序遍歷輸出樹結點。ifndef tree h define tree h struct binode class tree tree void preorder private binode root binode ...