二叉樹樹的四種遍歷方式的非遞迴演算法

2021-10-06 23:59:21 字數 903 閱讀 6339

先序遍歷

#include #define max 100

typedef struct node

btnode;

// 先序遍歷非遞迴演算法

void preorder(btnode * b)

// 再壓入左孩子,後訪問

if(p -> lchild != null)

}}}

中序遍歷

#include #define max 100

typedef struct node

btnode;

// 中序遍歷的非遞迴演算法

void inorder(btnode * b)

if(top > -1)

}}}

後序遍歷:

#include #define max 100

typedef struct node

btnode;

// 後序遍歷的非遞迴演算法

void postorder(btnode * b)

// p永遠指向上乙個輸出元素的指標

p = null;

flag = 1;

while(top > -1 && flag != 0)

else

}}while(top > -1)

}}

層次遍歷

#include #define max 100

typedef struct node

btnode;

// 層次遍歷

void levelorder(btnode * b)

if(p->rchild != null)

}}

二叉樹的四種遍歷(遞迴與非遞迴)

先序遍歷根節點,再遍歷左子樹,再遍歷右子樹。後序遍歷先遍歷左子樹,再遍歷右子樹,再遍歷根節點。先序遍歷遞迴實現 public static void preorderbyrecursion treenode root 先序遍歷的非遞迴實現 非遞迴實現需要借助棧這樣乙個資料結構,實際上遞迴實現也是依靠...

二叉樹四種遍歷方式

二叉樹的四種遍歷方式 include include using namespace std 二叉樹節點的定義 class treenode 遞迴方式,每個結點只遍歷一次,時間複雜度o 1 遞迴最多呼叫n次,空間複雜度o n 先序 根 遞迴左 遞迴右 void preorder treenode r...

二叉樹的四種遍歷方式

前言最近做題用到很多次二叉樹的遍歷,因此寫這篇文章記錄二叉樹的四種遍歷方式。首先為了方便,先假設二叉樹的結構如下 struct treenode 對於程式的輸入為 3 根節點root 9 20 4 10 15 71.二叉樹的層次遍歷 層次遍歷就是依次遍歷樹的每一層。借助佇列,可以輕鬆實現。void ...