BST1 棧和Morris遍歷

2021-10-22 16:35:05 字數 781 閱讀 9678

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 ...