第10周 專案1 二叉樹演算法驗證

2021-08-10 04:46:38 字數 1889 閱讀 3656

/*  

*all rights reservrd.      

*版本號:v1.0      

*問題描述:二叉樹演算法驗證

執行並重複測試教學內容中涉及的演算法。改變測試資料進行重複測試的意義在於,可以從更多角度體會演算法,以達到逐漸掌      握演算法的程度。使用你的測試資料,並展示測試結果,觀察執行結果,以此來領會演算法。 

一、層次遍歷演算法的驗證

實現二叉樹的層次遍歷演算法,並對用」a(b(d,e(h(j,k(l,m(,n))))),c(f,g(,i)))」建立的二叉樹進行測試。 

運用二叉樹演算法庫作為基礎,建立標頭檔案btree.h

#ifndef btree_h_included

#define btree_h_included

#define maxsize 100

typedef char elemtype;

typedef struct node

btnode;

void createbtnode(btnode *&b,char *str); //由str串建立二叉鏈

btnode *findnode(btnode *b,elemtype x); //返回data域為x的節點指標

btnode *lchildnode(btnode *p); //返回*p節點的左孩子節點指標

btnode *rchildnode(btnode *p); //返回*p節點的右孩子節點指標

int btnodedepth(btnode *b); //求二叉樹b的深度

void dispbtnode(btnode *b); //以括號表示法輸出二叉樹

void destroybtnode(btnode *&b); //銷毀二叉樹

void levelorder(btnode *b); //二叉樹的層次遍歷演算法

#endif // btree_h_included

在原始檔btree.cpp中實現各個函式

#include #include #include "btree.h"

void createbtnode(btnode *&b,char *str) //由str串建立二叉鏈}}

j++;

ch=str[j];

}}btnode *findnode(btnode *b,elemtype x) //返回data域為x的節點指標

}btnode *lchildnode(btnode *p) //返回*p節點的左孩子節點指標

btnode *rchildnode(btnode *p) //返回*p節點的右孩子節點指標

int btnodedepth(btnode *b) //求二叉樹b的深度

}void dispbtnode(btnode *b) //以括號表示法輸出二叉樹

}}void destroybtnode(btnode *&b) //銷毀二叉樹

}void levelorder(btnode *b)

if (p->rchild!=null) //有右孩子時將其進隊

}}

在main.cpp中實現

層次遍歷演算法的驗證

#include #include "btree.h"

int main()

二、

二叉樹構造演算法的驗證

除了btree.h中的函式之外還需要函式

btnode *createbt1(char *pre,char *in,int n)

main函式如下:

int main()

第10周 專案1 二叉樹演算法庫

1.標頭檔案 btree.h,包含定義順序表資料結構的 巨集定義 要實現演算法的函式的宣告 define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b,char str ...

第10周 專案1 二叉樹演算法庫

問題描述及 ifndef btree h included define btree h included 煙台大學計控學院 作 者 楊徵 完成日期 2015年11月2日 問題描述 定義二叉樹的鏈式儲存結構,實現其基本運算,並完成測試。要求 1 標頭檔案btree.h中定義資料結構並宣告用於完成基本...

第10周專案1 二叉樹演算法庫

問題及 檔名稱 cpp1.cpp 完成日期 2015年11月02日 版本號 v1.0 問題描述 定義二叉樹的鏈式儲存結構,實現其基本運算,並完成測試。標頭檔案 btree.h,包含定義順序表資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef btree h included define ...