思路
分別找到p、q到達根結點的路徑,這兩條路徑的最后一個相同結點就是最近公共祖先
而后序遍歷的非遞歸算法可以保留結點的所有祖先結點(即到根結點的路徑),所以使用后序遍歷的非遞歸算法具體實現
后序遍歷的非遞歸算法
1、若結點不為空或者棧不為空,則繼續執行以下步驟
2、若結點不為空,一直找左子樹
3、(結點為空)若棧不為空,並且結點的右子樹被訪問,退棧
4、(結點為空)若棧不為空,並且結點的右子樹未被訪問,標記右子樹被訪問,且訪問右子樹
分別找到p、q到達根結點的路徑,這兩條路徑的最后一個相同結點就是最近公共祖先
而后序遍歷的非遞歸算法可以保留結點的所有祖先結點(即到根結點的路徑),所以使用后序遍歷的非遞歸算法具體實現
1、若結點不為空或者棧不為空,則繼續執行以下步驟
2、若結點不為空,一直找左子樹
3、(結點為空)若棧不為空,並且結點的右子樹被訪問,退棧
4、(結點為空)若棧不為空,並且結點的右子樹未被訪問,標記右子樹被訪問,且訪問右子樹
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。