第十一周專案一3由順序儲存結構轉為二叉鏈儲存結構

2021-07-24 12:15:22 字數 2297 閱讀 5308

問題**:
*all right reserved.

*檔名稱:線索化二叉樹.cpp

*完成日期;2023年11月10日

*版本號;v1.0

*問題描述:由順序儲存結構轉為二叉鏈儲存結構

*輸入描述:二叉樹左子樹與右子樹的值

*程式輸出:對應真正的二叉樹

*/

#include #include #include "btree.h"

int main()

#include #include #include "btree.h"

btnode *trans(sqbtree a,int i)

btnode *crtree(char s,int i,int j)

//以下為i!=j的情況

for (k=i; k<=j; k++)

if (s[k]=='+' || s[k]=='-')

if (plus==0) //沒有+或-的情況(因為若有+、-,前面必會執行plus++)

for (k=i; k<=j; k++)

if (s[k]=='*' || s[k]=='/')

//以上的處理考慮了優先將+、-放到二叉樹較高的層次上

//由於將來計算時,運用的是後序遍歷的思路

//處於較低層的乘除會優先運算

//從而體現了「先乘除後加減」的運算法則

//建立乙個分支節點,用檢測到的運算子作為節點值

if (plus!=0)

else //若沒有任何運算子,返回null

return null;

}

double comp(btnode *b)

} 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) //銷毀二叉樹

} #define maxsize 100

typedef char elemtype;

#define n 30

typedef elemtype sqbtree[n];

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); //銷毀二叉樹

double comp(btnode *b);

btnode *crtree(char s,int i,int j);

btnode *trans(sqbtree a,int i);

執行結果

知識點總結:

把乙個順序儲存的資料鏈進行層次遍歷一樣的逆訪問,簡稱為逆層次遍歷吧,按根左右的方式建立樹,有則建立節點,無則消除節點。

學習心得

以後建立二叉樹可以用這個程式直接輸入就可以建立了。

第十一周專案一(3)

問題描述 執行並重複測試教學內容中涉及的演算法。改變測試資料進行重複測試的意義在於,可以從更多角度體會演算法,以達到逐漸掌握演算法的程度。使用你的測試資料,並展示測試結果,觀察執行結果,以此來領會演算法。輸入描述 若干測試資料。程式輸出 對應資料的輸出。include include define ...

第十一周專案一

檔名稱 jcy 作 者 賈存鈺 完成日期 2017年11月9日 問題描述 定義圖的鄰接矩陣和鄰接表儲存結構,實現其基本運算,並完成測試。標頭檔案graph.h中定義相關的資料結構並宣告用於完成基本運算的函式。在graph.cpp中實現這些函式.用main.cpp中的main函式中完成測試。cpp v...

第十一周專案一

煙台大學計算機學院 檔名稱 1.cpp 完成日期 2017年11月23日 問題描述 定義圖的鄰接矩陣和鄰接表儲存結構,實現其基本運算,並完成測試。輸入描述 無 輸出描述 輸出鄰接矩陣,鄰接表。include define maxv 100 define inf 32767 typedef intin...