天天看點

二叉樹周遊非遞歸算法

遞歸算法非常的簡單。先通路跟節點,然後通路左節點,再通路右節點。如果不用遞歸,那該怎麼做呢?仔細

一.先序周遊

  看一下遞歸程式,就會發現,其實每次都是走樹的左分支(left),直到左子樹為空,然後開始從遞歸的最深處傳回,然後開始恢複遞歸現場,通路右子樹。

由于一直走到最左邊後,需要逐漸傳回到父節點通路右節點,是以必須有一個措施能夠對節點序列回溯。

  可以用棧記憶:在通路途中将依次遇到的節點儲存下來。由于節點出現次序與恢複次序是反序的,是以是一個先

進後出結構,需要用棧;還可以節點增加指向父節點的指針。 

  

二.中序周遊

三.後序周遊

  不寫了……

四.層次周遊

繼續閱讀