計算機演算法 二叉樹的遍歷

2021-10-10 18:13:41 字數 1354 閱讀 1333

/*

* 二叉樹的四種遍歷方式,這裡沒有採用真實的指標去做,

* 而是採用陣列下標去模擬指標,是一種更加方便快速的方法

*/#include

#include

using

namespace std;

const

int n =

10010

;const

int inf =-1

;// 我們用乙個常數來表示當前二叉樹節點為空的情況

struct node

; node node[n]

;// 按照前序遍歷二叉樹的順序輸入樹節點

void

input

(int n)

node[n]

.p = n /2;

node[n]

.l = n *2;

node[n]

.r = n *2+

1;input

(n*2);

input

(n*2+1

);}// 前序遍歷二叉樹

void

preorderparse

(int n)

cout << node[n]

.w <<

" ";

preorderparse

(node[n]

.l);

preorderparse

(node[n]

.r);

}// 中序遍歷二叉樹

void

inorderparse

(int n)

inorderparse

(n*2);

cout << node[n]

.w <<

" ";

inorderparse

(n*2+1

);}// 後續遍歷二叉樹

void

postorderparse

(int n)

postorderparse

(n*2);

postorderparse

(n*2+1

); cout << node[n]

.w <<

" ";

}/*

* 層序遍歷二叉樹,這裡採用的是 c++ stl 模板的提供的佇列(queue),

* 並沒有自己去實現乙個佇列

二叉樹遍歷演算法

二叉樹是一種非線性的資料結構,在對它進行操作時,總是需要逐一對每個資料元素實施操作,這樣就存在乙個操作順序問題,由此提出了二叉樹的遍歷操作。所謂遍歷二叉樹就是按某種順序訪問二叉樹中的每個結點一次且僅一次的過程。這裡的訪問可以是輸出 比較 更新 檢視元素內容等等各種操作。在這裡寫了個二叉樹遍歷演算法 ...

二叉樹的遍歷演算法

遞迴演算法 void pre root 先序遍歷非遞迴演算法 void pre2 root if s.isempty 中序遍歷非遞迴 void pre2 root if s.isempty 中序遍歷的程式設計題 後序遍歷非遞迴 借助兩個棧來實現 void post if root null retu...

二叉樹的遍歷演算法

二叉樹的遍歷 二叉鍊錶typedef struct btnode btnode,bintree 三叉鍊錶typedef struct btnode btnode,bintree 二叉鍊錶和三叉鍊錶都是用來描繪二叉樹的!一 層序遍歷void levelorder bintree bt define m...