偶爾看到這樣乙個問題:
有個二叉樹,每個節點除了左右指標外,還有乙個指向父節點的指標。
要求不用遞迴,中序遍歷這棵樹。另要求空間複雜度是o(1).
空間複雜度為o(1),擺明就是不讓用堆疊模擬遞迴,所以想了想思路,也請教過好幾個朋友,大家都基本想法都差不多,由於有指向父節點的指標,必定可以回溯,從而可以不需要堆疊來做記錄.
但是實現起來,卻發現很多細節需要完善,比如遍歷的終止條件,現在我是用預先遍歷到最後乙個右子樹,用這個指標作為終止條件.
昨天大體實現了一下.
貼出來,期待達人改進.
關於普通的中序非遞迴寫法,可以參考這裡:
不用棧,來實現二叉樹的非遞迴中序遍歷
如果要求只能用非遞迴方法,同時還不讓用棧,來遍歷完全二叉樹,則每個結點必須有乙個指向父結點的指標。題目 完全二叉樹,採用三叉鍊錶結構。要求 不用遞迴,中序遍歷這棵樹。要求空間複雜度是o 1 分析 題目不讓用遞迴,那就用迭代,同時,空間複雜度是常量級,擺明了不讓用棧。那就必須是三叉鍊錶了。三叉鍊錶是二...
非遞迴中序遍歷二叉樹
非遞迴中序遍歷二叉樹 include define maxsize 100 typedef char datatype 二叉鍊錶型別定義 typedef struct binnode binnode,bintree 順序棧型別定義 typedef struct seqstk 初始化棧 int ini...
二叉樹的非遞迴中序遍歷
最近在溫習資料結構,通常網上看到的二叉樹非遞迴中序遍歷如以下形式 define maxnode 100 二叉樹最大節點數 定義二叉樹鏈式結構 typedef struct bitnode bitnode,bitree 二叉樹進行中序非遞迴遍歷 void nrinorder bitree t stac...