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 ...