1. 用棧模擬遞迴
以先序遍歷為例:
先序遍歷:
/*先序遍歷*/
class
solution
else
}return pre;}}
;
中序遍歷:
class
solution
else
}return ans;}}
;
後序遍歷:
class
solution
else
else}}
return ans;}}
;
以先序遍歷為例:
先序遍歷:
class
solution
else
if(node-
>right==nullptr)
else}}
return res;}}
;
中序遍歷,改變加入ans的位置即可:
class
solution
else
//如果前驅結點沒有被線索化,線索化它,遍歷當前結點的左子樹
if(node-
>right==nullptr)
else}}
return res;}}
;
morris後序。。。不會寫了 演算法 二叉樹遍歷 廣度,棧 非遞迴,Morris
static void bfs node root if node.right null static void iterativepreorder node root static void stackpreorder node root else static void stackinorder...
迭代法後序遍歷二叉樹 和 Morris遍曆法
首先宣告乙個棧 stack 若root有左子樹,root入棧,root root.left,直到root為空,彈出棧頂元素並將其賦值給root 若root沒有右子樹或右子樹已經被訪問,則訪問root節點,用pre記錄root,然後root賦值null 注意 只有訪問root節點時才更新pre節點 若...
遞迴 棧和佇列遍歷
import os def getalldir path,sp fileslist os.listdir path 得到當前目錄下所有的檔案 sp for filename in fileslist 處理每乙個檔案 fileabspath os.path.join path,filename if ...