資料結構 非遞迴遍歷二叉樹(利用輔助棧)

2021-06-02 10:10:01 字數 748 閱讀 9541

#include "stdafx.h"  

#include #include /*非遞迴方法前序遍歷二叉樹,利用輔助棧(指標陣列實現)。由於對指標不是很熟悉,**較為混亂,基本上實現遍歷的功能。

主要練習對結構體指標與鍊錶的使用。*/

typedef struct tree*bitree,node;

bitree *temp[100]=;//存放當前根節點的指標

int flag=-1;//儲存當前棧頂位置

//迴圈建立二叉樹

void createbitree(bitree &t)/*devc++無法編譯此句話,需要從vs中執行*/

else

} int isempty()//判斷棧是否為空

void push(bitree &t)//節點入棧

bitree *pop()//節點出棧

void nonrecorder(bitree &t)//非遞迴前序遍歷

else if(t->right&&!(t->left))//當只有右孩子時,將右孩子入棧,並繼續向下搜尋

else if(t->right&&t->left)//兩個孩子都有的情況先將右孩子入棧,再將左孩子入棧,並繼續向左孩子搜尋

}}void preorder(bitree &t) //遞迴先序遍歷以t為根的二叉樹

} int main(int argc, char *argv)

資料結構 二叉樹的遞迴 非遞迴遍歷

複習一下二叉樹遞迴非遞迴的先中後序遍歷 寫非遞迴後序遍歷的時候卡殼了,參考了一下網上的思路,大概有兩種,一種是標記每個節點是否有走過,如果父節點的左右子節點都標記訪問過,則可以訪問父節點 一種是定義乙個指標,指向上乙個訪問的節點,如果某父節點的右子節點為null或者是上乙個訪問的節點,則該父節點應當...

資料結構 二叉樹遍歷非遞迴實現

資料結構中二叉樹的遍歷主要分為先序,中序和後序。順序是相對根節點來說的。先序中序非遞迴實現比較簡單,後序較為複雜些,需要判斷右子樹是否為空或遍歷完。以下為三種遍歷方法的非遞迴c實現 include include typedef struct binode binode,bitree typedef...

資料結構 二叉樹遍歷 非遞迴演算法

二叉樹的遍歷非遞迴演算法。include include define maxsize 100 typedef char elemtype using namespace std typedef struct node btnode void createbtnode btnode b,char s...