問題**:
*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...