前序建立二叉樹 前序 中序 後序遍歷二叉樹

2021-07-07 01:36:41 字數 1277 閱讀 2501

二叉樹的建立:

如果要在記憶體中建立乙個如下左圖這樣的樹,wield

能讓每個結點確認是否有左右孩子,我們對它進行擴充套件,變成如下右圖的樣子,也就是將二叉樹中的每個結點的空指標引出乙個虛結點,其值為乙個特定值,比如」#

」,稱之為擴充套件二叉樹。擴充套件二叉樹就可以做到乙個遍歷序列確定一棵二叉樹了。如前序遍歷序列為ab#d##c##。

有了這樣的準備,就可以看看如何生成一棵二叉樹了。假設二叉樹的結點均為乙個字元,把剛才前序遍歷序列ab#d##c##

用鍵盤挨個輸入,實現的演算法如下所示。

精簡版

#include#include#includeusing namespace std;

struct bitree;

//設定空二叉樹

void setnull(struct bitree * bt)

//先序建立二叉樹操作

struct bitree * createbitree()

return bt ; // 返回根結點

}//前序遍歷二叉樹

void preorder(struct bitree * root)

}// 中序遍歷二叉樹

void inorder(struct bitree * root)

}//後序遍歷二叉樹

void postorder(struct bitree * root)

}int main();

//設定空二叉樹

void setnull(struct bitree * bt)

//先序建立二叉樹操作

struct bitree * createbitree()

//coutdata << endl;

else

cout<

preorder(root->lchild) ;

preorder(root->rchild) ;

}}// 中序遍歷二叉樹

void inorder(struct bitree * root)

}//後序遍歷二叉樹

void postorder(struct bitree * root)

}int main(){

int n = 10 ;

while(n--){

struct bitree * t ;

cout<

二叉樹 前序遍歷 中序遍歷 後序遍歷

前序遍歷 dlr 是二叉樹遍歷的一種,也叫做先跟遍歷,先序遍歷,前序周遊,可記做根左右。前序遍歷首先訪問根節點然後遍歷左子樹,最後遍歷右子樹。前序遍歷首先訪問根節點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根節點,然後遍歷左子樹,最後遍歷右子樹。若二叉樹為空則結束返回,否則 1 ...

二叉樹前序,中序,後序遍歷詳解

只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...

二叉樹前序,中序,後序遍歷詳解

只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...