[英]AVL Tree Non-Recursive
我正在學習 AVL Tree 並在遞歸代碼中獲得了 TLE。 我的導師建議迭代解決方案。 我搜索並找到了一個將父節點保存在子節點中的解決方案。 我想知道這個可能會在內存中出現問題,不是嗎? 還有另一種方法可以在 AVL Tree 中插入、刪除不需要將父項保存在子項中的內容嗎? 請給我一個提示。
迭代(非遞歸)方法需要父引用,因為插入/刪除后需要回溯,我們可以在遞歸方法中使用堆棧回溯,而在迭代方法中我們只能使用父引用回溯。 請參閱https://en.wikipedia.org/wiki/AVL_tree#Insert和https://en.wikipedia.org/wiki/AVL_tree#Delete 。
插入之后,有必要檢查每個節點的祖先是否與 AVL 樹的不變量一致:這稱為“回溯”。
這是 C 中基於 BalanceFactor 的迭代 AVL 樹實現: https ://github.com/xieqing/avl-tree
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.