1、熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現;
2、掌握樹的順序結構的實現;
3、學會運用樹的知識解決實際問題
二、實驗內容
1、自己確定乙個二叉樹(樹結點型別、數目和結構自定)利用鏈式儲存
結構方法儲存。實現樹的構造,並完成:
1) 用前序遍歷、中序遍歷、後序遍歷輸出結點資料;
2) 以合理的格式,輸出各個結點和雙親、孩子結點資訊;
3)輸出所有的葉子結點資訊;
三、設計與編碼
1.本實驗用到的知識理論
思想:讓二叉樹的每乙個結點對應乙個鍊錶結點,鍊錶結點除了存放與二叉樹有關的資料資訊外,還要設定指示左右孩子的指標。
(1)二叉樹的順序儲存結構就是資料域存放二叉樹的結點,並且用指標域表示結點之間的邏輯關係;
(2)不需要把二叉樹補充為完全二叉樹,可以直接通過指標
輸出結點的資訊和孩子的資訊;
(3)指標域包括左指標域和右指標域。
2.演算法設計
定義bitree類模板
class bitree
//建構函式,建立一棵二叉樹
~bitree() //析構函式,釋放各結點的儲存空間
void preorder() //前序遍歷二叉樹
void inorder() //中序遍歷二叉樹
void postorder() //後序遍歷二叉樹
void print() //輸出結點的雙親和孩子結點資訊
void printleaf() //輸出葉子結點資訊
};(2
)建構函式:建立一棵二叉樹
(3)定義根結點的頭指標,左指標域和右指標域。
(4)前序遍歷:訪問樹根、左孩子、右孩子。
(5)中序遍歷:訪問左孩子、樹根、右孩子。
(6)後序遍歷:訪問左孩子、右孩子、樹根。
(7)輸出結點雙親和孩子結點資訊:首先判斷根結點和左右孩子是否存在,若存在則呼叫print()函式輸出結點資訊,否則輸出「不存在」。
(8)輸出葉子結點資訊:首先判斷是不是葉子(即沒有左孩子和右孩子),若是葉子結點則輸出該結點的資訊。
3.**
#include
struct binode
;class bitree
//建構函式,建立一棵二叉樹
~bitree() //析構函式,釋放各結點的儲存空間
void preorder() //前序遍歷二叉樹
void inorder() //中序遍歷二叉樹
void postorder() //後序遍歷二叉樹
void print() //輸出結點的雙親和孩子結點資訊
void printleaf() //輸出葉子結點資訊
};binode *bitree::creat(binode *bt)
return bt;
}void bitree::release(binode *bt)
}void bitree::preorder(binode *bt)
}void bitree::inorder(binode *bt)
}void bitree::postorder(binode *bt)
} void bitree::print(binode *bt,binode *pr)
} void bitree::printleaf(binode *bt)
}
int main()
{bitree t; //建立一棵二叉樹
cout<
cout
cout
cout
四、運算結果
五、總結與心得
二叉樹的鏈式儲存需要注意的是讓每個結點都有左右孩子,如沒有則用#表示,有沒有左右孩子的判斷表示式以及是不是葉子的判斷表示式與順序儲存不一樣,但實質是一樣的。
實驗 5 樹和二叉樹的實驗 2
一 實驗目的 1 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現 2 掌握樹的順序結構的實現 3 學會運用樹的知識解決實際問題 二 實驗內容 自己確定乙個二叉樹 樹結點型別 數目和結構自定 利用鏈式儲存結構方法儲存。實 現樹的構造,並完成 1 用前序遍歷 中序遍歷 後序遍歷輸出結點資料 ...
實驗 5 樹和二叉樹的實驗 1
實驗 5 樹和二叉樹的實驗 1 一 實驗目的 1 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現 2 掌握樹的順序結構的實現 3 學會運用樹的知識解決實際問題 二 實驗內容 自己確定乙個二叉樹 樹結點型別 數目和結構自定 利用順序結構方法儲存。實 現樹的構造,並完成 1 層序輸出結點資料...
實驗五 樹和二叉樹的實驗2
使用二叉樹的鏈式儲存結構,建立一棵二叉樹,進行前序 中序以及後序遍歷,同時求得二叉樹的結點個數以及葉子結點個數。程式源 ifndef bitree h define bitree h struct binode char data binode lchild,rchild class bitree ...