——此文章摘自《多任務下的數(shù)據(jù)結構與算法》定價:58元 特價:44.7元 購買>>
1. 使用遞歸的遍歷算法
對普通樹的遍歷只有深度優(yōu)先、寬度優(yōu)先兩種遍歷方法,深度優(yōu)先又可以分為先序和后序兩種,但沒有中序遍歷之說,中序遍歷只有二叉樹才有。
下面分別給出先序遍歷、后序遍歷和寬度優(yōu)先遍歷的流程如圖5-2、圖5-3、圖5-4所示。
2. 使用棧的非遞歸遍歷算法
所有的遞歸算法都可以通過使用棧操作來變成非遞歸的算法,本質上講,遞歸算法是利用系統(tǒng)本身提供的棧,不過系統(tǒng)本身的棧深度很大時效率非常低,因此可以使用自己的棧來取代系統(tǒng)的棧將遞歸算法變成非遞歸算法。

圖5-2 普通樹的先序遍歷流程圖

圖5-3 普通樹的后序遍歷流程圖

圖5-4 樹的寬度方向遍歷流程圖
3. 不使用棧的非遞歸遍歷算法
對于普通樹來說,也可以設計出不使用棧的非遞歸遍歷算法,不過這要求每個節(jié)點都保存它的父節(jié)點指針,不使用棧的非遞歸遍歷算法流程如圖5-5所示。

圖5-5 不使用棧的普通樹的非遞歸遍歷流程圖