基於棧的非遞迴方法實現二叉樹

2021-08-03 22:26:47 字數 1087 閱讀 9298

#include

#include

#include

using

namespace

std;

struct binode

;typedef

struct binode node;

typedef node* linknode;

//以先序的順序編寫結點

linknode creattree(linknode t)

else

return t;

}//非遞迴前序

void preorder(linknode t)

vector

s; linknode p = t;

while(p != null || !s.empty())

if(!s.empty())

}}void inorder(linknode t)

vector

s; linknode p = t;

while(p != null || !s.empty())

if(!s.empty())

}}/*

具體思路:棧s1 和s2 。首先根節點入棧s1,當s1不為空彈出棧頂元素,併入棧s2,如果說彈出的左右子樹不為空,則依次將其左子樹和右子樹入棧。直到棧s1空時停止。/i/

*/void postorder(linknode t)

vector

s1,s2;

linknode p = t;

s1.push_back(t);

while(!s1.empty())

if(p->right != null)

}while(!s2.empty())

}int main()

{ node *tree;

tree = creattree(tree);

cout

<

<

<

執行結果

遞迴 棧 非遞迴非棧實現二叉樹的遍歷

基於迎春花開365天 利用棧實現二叉樹的先序 中序 後序遍歷的非遞迴操作 以及 alvin qu 非遞迴,不用棧實現二叉樹中序遍歷 的演算法,本人對二叉樹的遍歷做出系統的總結 c 實現 包含先序 中序 後序的遞迴 棧實現 非遞迴非棧實現。其中以雙棧作為輔助資料結構的後序遍歷演算法,於jimolang...

二叉樹 非遞迴實現

include include include include define elemtype char using namespace std typedef struct bitnodebitnode,bitree int createbitree bitree t return1 void p...

二叉樹遍歷非遞迴實現(借助棧)

先序遍歷非遞迴實現 思路 使用棧來模擬遞迴的操作 迴圈條件 節點不為null,且棧不為空。如果當前節點不為空,把節點進棧,並且訪問節點 cout 節點指向其左孩子,直至左孩子為空。這時相當於左子樹已經遍歷完了,我們需要訪問右節點,將當前元素指向棧頂元素右孩子,彈出棧頂元素。c void preord...