前序 中序 後序 非遞迴 實現

2021-07-23 11:07:55 字數 630 閱讀 2538

1. 簡述

void

preorder(node

*root) }

3. 中序非遞迴

前序中的root主要作為中間變數使用。這裡的root的意義是下乙個要進棧的結點,初始值為根結點。

while (root不為空 || 棧不為空)   

void

inorder(node

*root) 

else}}

4. 後序非遞迴

root表示下乙個要處理的結點,初始化為根結點,per表示上一次剛剛輸出過的結點。

,per的作用是對有孩子的結點進行判斷,由於演算法特性,每次到某個結點時,其左子樹都輸出過了,此時只要判斷pre是否是當前結點的右孩子,如果不是,那麼說明其右子樹沒走過,那麼root=當前結點的右子樹,否則就是剛剛輸出了當前結點的右孩子,由於是後序,其右子樹也必定都輸出過了,此時只要輸出當前結點,更新pre就好了。

while(root不為空 || 棧不為空)

}void

postorder(node

*root) 

else

else }

}} 

5. 參考

二叉樹的遍歷:前序,中序,後序,層序--包括遞迴和非遞迴實現

前序 中序 後序 非遞迴 實現

1.簡述 void preorder node root 3.中序非遞迴 前序中的root主要作為中間變數使用。這裡的root的意義是下乙個要進棧的結點,初始值為根結點。while root不為空 棧不為空 else 4.後序非遞迴 root表示下乙個要處理的結點,初始化為根結點,per表示上一次剛...

前序中序後序遍歷遞迴非遞迴實現

根 左兒子 右兒子 definition for binary tree struct treenode void preorder treenode root,vector v 非遞迴遍歷時就是模擬棧,注意入棧順序即可 void preorder treenode root,vector v 左二...

C 前序中序後序非遞迴遍歷

前序遍歷 根左右 迴圈到左子樹空,else轉右子樹,當乙個結點已經訪問右子樹時,該結點出棧 include include include include includeusing namespace std struct treenode class solution 左子樹到底了 else re...