二叉樹的前中後序遍歷非遞迴實現及層次遍歷佇列實現

2021-08-18 09:02:00 字數 712 閱讀 2020

二叉樹的層次遍歷實現思想(和圖的廣度優先遍歷思想一致)

先建立乙個二叉樹結點型別佇列,根結點若不為空則入隊

緊接著對頭出隊,馬上訪問輸出出隊結點的資料域,出隊的同時判斷該結點是否有左右孩子,有的話則統統入隊,注:左右孩子都有時先左孩子入隊,先進先出嘛在隊不為空的情況下迴圈執行以上兩步

好了,上**才是王道

#include 

#include

#define maxsize 100

typedef

struct btnodebtnode;

void createbtree(btnode *&p)else

}void preorderst(btnode *p)

if(q->lchild!=null)}}

}void inorderst(btnode *p)

if(top!=-1)

}} void postorderst(btnode *p)

if(q->rchild!=null)

}while(top2!=-1)

} void level(btnode *p)

if(q->rchild!=null)}}

}int main(int argc, char** argv)

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

相比遞迴遍歷二叉樹,非遞迴遍歷二叉樹稍難一些,而又數非遞迴後序遍歷二叉樹更難。在我通過與這段時間所學資料結構相結合,學習和了解了非遞迴遍歷二叉樹的方法,這裡三種遍歷方式都會用到棧,利用棧的逐層壓棧與先進後出的特點,類似於用 實現了遞迴遍歷二叉樹的基本方法。非遞迴二叉樹的遍歷個人認為注重的是思想,實現...

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

二叉樹節點類 author wj class treenode 二叉樹類 author wj class binarytree private void add node to tree int value 建立二叉樹 treenode currentnode treenode while true...

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

前序遍歷最簡單,無腦入棧無腦出棧,出棧的時候先入右再入左即可。class solution stack.push root while stack.size 0 if temp.left null return res 中序遍歷比較特殊,要有乙個前驅指標p來一直向左試探,所以條件上多了一項p nul...