二叉樹非遞歸使用常數存儲空間遍歷

 

主要使用了一個方向值orien,記錄在二叉樹中搜索時的路徑方向,比如由父節點到左子樹時orien值爲1,這樣按照嚴格的行走規則,在一個while循環裏就能遍歷整棵樹。

    一個簡單的例子:

    一棵樹爲:            8

                  4             12

              2       6     10       14

             1 3     5 7   9  11   13  15

    那麼程序將採用一個相當於後序遍歷的順序對樹進行遍歷,對於一個節點,將先搜索左子樹,再搜索右子樹,然後輸出該節點的值。根據orien值的不同,對遍歷的下一步走向進行

    選擇,具體看printTree中的while循環。對於上面這棵樹,輸出順序爲:1 3 2 5 7 6 4 9 11 10 13 15 14 12 8。

    程序沒有測試一些特殊情況,可能存在bug,歡迎指正;若有啥問題歡迎交流!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章