第十一周 專案一(2) 二叉樹的構造

2021-07-07 06:31:21 字數 1876 閱讀 4945

*完成時間;2023年11月17號

*題目描述:學會使用線序序列和中序序列構造二叉樹

***1:演算法庫中標頭檔案部分

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

btnode *createbt1(char *pre,char *in,int n);/*pre存放先序序列,in存放中序序列,n為二叉樹結點個數,

本演算法執行後返回構造的二叉鏈的根結點指標*/

#endif // btree_h_included

***2:部分函式的實現

#include #include #include "btree.h"

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

/*pre存放先序序列,in存放中序序列,n為二叉樹結點個數,

本演算法執行後返回構造的二叉鏈的根結點指標*/

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

}

***3:main函式

#include #include #include "btree.h"

int main()

*執行結果:

*知識點總結及心得:

這次的專案是二叉樹的構造,利用先序序列和中序序列進行構造,這部分**自己看的比較困難,再加上還有遞迴在裡面,所以,這部分的**自己寫還是有些難,其實,看老師**的過程還是可以看懂的,但是如果讓自己沒有老師**『參考』去完成整個**的書寫,感覺還是不太現實,唉,啥時候才能和老師一樣,寫**分分鐘就好了。

第十一周專案一(2) 二叉樹構造

問題及 all right reserved.檔名稱 二叉樹的構造.cpp 完成日期 2015年11月9日 版本號 v1.0 問題描述 由先序序列和中序序列構造二叉樹 由中序序列和後序序列構造二叉樹 輸入描述 各個序列元素排列 程式輸出 二叉樹的構造 include include btree.h ...

第十一周專案2 二叉樹的構造

問題及 all right reserved.檔名稱 二叉樹的構造.cpp 完成日期 2015年11月9日 版本號 v1.0 問題描述 由先序序列和中序序列構造二叉樹 由中序序列和後序序列構造二叉樹 輸入描述 各個序列元素排列 程式輸出 二叉樹的構造 include include btree.h ...

第十一周專案2二叉樹構造演算法的驗證

問題及描述 定理 任何n n 0 個不同節點的二叉樹,都可由它的中序序列和先序序列唯一地確定 輸入描述 btree.h ifndef btree h included define btree h included define maxsize 100 typedef char elemtype t...