二叉樹的建立與遍歷(遞迴和非遞迴)

2021-10-05 10:29:03 字數 1290 閱讀 5875

最近學到了二叉樹,把二叉樹的實現演算法記錄下來

#include

using

namespace std;

#define maxsize 20

typedef

char elemtype;

class

binode

;typedef binode * bitree;

//二叉樹的建立

void

creat

(bitree &p)

}// 前序遍歷

void

preorder

(binode *t)

//中序遍歷

void

inorder

(binode *t)

//後序遍歷

void

postorder

(binode *t)

//深度

inttreedepth

(binode * bt)

int nleft =

treedepth

(bt-

>left)

;int nright =

treedepth

(bt-

>right)

;return nleft > nright ? nleft +

1: nright +1;

}//結點個數

intsize

(binode* bt)

//摧毀二叉樹

void

destroy

(binode * t)

}//前序非遞迴遍歷

void

preordernonrecursion

(binode *bt)

//bt 根節點}}

//中序非遞迴遍歷

void

inordernonrecursion

(binode *bt)

//bt 根節點

if(top !=-1

)}}}

//後序非遞迴遍歷:前序遍歷中交換左右孩子的順序變成根右左,再通過逆置就變成了左右根,實現後序遍歷

void

postordernonrecursion

(binode *bt)

//bt 根節點

while

(top2 !=-1

)//訪問stack2,出棧即為後序遍歷結果}}

intmain()

二叉樹遞迴遍歷和非遞迴遍歷

用遞迴和非遞迴實現二叉樹的前序遍歷 中序遍歷和後序遍歷並列印出相應結果。private class treenode 在遞迴呼叫時候系統自動給我們建立棧來儲存資料,而使用非遞迴時候需要我們自己實現棧來儲存資料。遞迴實現前序遍歷public void preorder treenode root sy...

二叉樹的非遞迴遍歷(遞迴和非遞迴)

二 叉樹是一種非常重要的資料結構,很多其它資料結構都是基於二叉樹的基礎演變而來的。對於二叉樹,有前序 中序以及後序三種遍歷方法。因為樹的定義本身就是 遞迴定義,因此採用遞迴的方法去實現樹的三種遍歷不僅容易理解而且 很簡潔。而對於樹的遍歷若採用非遞迴的方法,就要採用棧去模擬實現。在三種遍歷中,前序和中...

二叉樹遍歷(遞迴和非遞迴)

二叉樹的中序遍歷 二叉樹的後序遍歷 測試二叉樹的節點定義如下 節點 二叉樹的前序遍歷順序為 根左右。如下圖所示,前序遍歷順序為 1245367。遞迴 public static void preorder treenode root system.out.print root.val preorde...