C 實現二叉樹的遍歷(前中後遞迴與非遞迴)

2021-10-05 11:45:52 字數 1142 閱讀 4814

c++實現二叉樹的遍歷(前中後 遞迴與非遞迴)

#include

#include

#include

using

namespace std;

//二叉樹結構體定義

struct treenode

treenode

(int x)};

//前中後序遍歷 遞迴實現

void

preorderrec

(treenode* root)

//前序遍歷 非遞迴實現 利用棧

void

preorder

(treenode* root)

if(s.

size()

!=0) p = s.

top();

}return;}

//中序遍歷 非遞迴實現 利用棧

void

midorder

(treenode* root)

p = s.

top();

cout << p-

>val <<

" ";

s.pop();

p = p-

>right;

}return;}

//後序遍歷 非遞迴實現 利用棧

void

postorder

(treenode* root)

else

if(cur-

>left !=

nullptr)}

}return;}

//利用佇列實現層序遍歷來列印二叉樹

void

printtreenode

(treenode* root)

cout << endl;

return;}

intmain()

輸出結果:

層序遍歷列印二叉樹!

1 2 3 4 5

非遞迴前序列印二叉樹!

1 2 4 5 3

非遞迴中序列印二叉樹!

4 2 5 1 3

非遞迴後序列印二叉樹!

4 5 2 3 1

二叉樹的前中後遍歷遞迴非遞迴實現

好吧,我終於把前中後 遞迴和非遞迴的都寫出來了。如下 不解釋 include includeusing namespace std struct btnode void assertbtn btnode root1,int a else 非遞迴前序遍歷 stack s pre void preord...

二叉樹的遍歷(前 中 後 層次)遞迴與非遞迴實現

遞迴 void preorder btnode root void preorder btnode root if s.empty cout 遞迴 void inorder btnode root void inorder btnode root if s.empty cout 遞迴 void po...

二叉樹遍歷實現(前中後層次 遞迴非遞迴)

一.前序遍歷 include include includeusing namespace std struct binarytreenode 遞迴實現 void preorder1 binarytreenode proot if proot m pright nullptr 非遞迴實現 void ...