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

2021-06-27 13:24:15 字數 970 閱讀 9053

其中前序和中序,簡單且容易理解。後序遍歷有難度。

#include "stdafx.h"

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

typedef struct binode

binode,*linkbitree;

typedef struct stack

sqstack;

//棧初始化

void initstack(sqstack &s)

void push (sqstack &s,linkbitree e)

}linkbitree pop(sqstack &s,linkbitree e)

return e;

}//遞迴演算法建立二叉樹

void creattree(linkbitree &t)

else

}void preorder (linkbitree &t)

while(p||!(s.top==-1))//樹結點存在且棧不為空,因為不停的入棧出棧,直到所有結點都出棧才算完

else}}

void midorder ( linkbitree &t)

while(p||!(s.top==-1))//樹結點存在且棧不為空,因為不停的入棧出棧,直到所有結點都出棧才算完

else

} }

void backorder(linkbitree &t)//後序遍歷比較難

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

1前序遍歷 按照根左右的順序進行遍歷,首先訪問根節點,若左孩子非空,訪問左子樹 右孩子非空訪問右子樹。以此規則遍歷整個二叉樹 1 當前點入棧,輸出該節點 2 如當前節點左孩子非空,訪問該節點的左孩子回到 1 3 若當前節點左孩子為空,訪問該節點右孩子回到 1 stacks vectorres tre...

二叉樹 前中後 非遞迴遍歷

非遞迴遍歷就是迭代遍歷 模擬的就是遞迴中的過程,比遞迴略微複雜 非遞迴前序遍歷 public static void prordernor treenode root 獲取棧頂元素 curnode st.pop 訪問棧頂元素的右子樹 curnode curnode.right system.out....

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

前幾天面試過程中面試官讓手寫一下二叉樹後序遍歷的非遞迴寫法,當時沒有寫出來,本想著可能是因為面試太緊張的原因,才這麼簡單的題都沒寫出來,後來特地去研究了一下,發現二叉樹的後序遍歷非遞迴實現還真的沒我想的那麼簡單,在此寫個部落格記錄一下,順便把前序和中序的非遞迴實現也寫出來。其實不管是前序 中序還是後...