From 9d76f8bd7f99c9154d036811ae3c82d388cc7779 Mon Sep 17 00:00:00 2001 From: "piotr.idzik" Date: Fri, 27 Jan 2023 22:44:25 +0100 Subject: [PATCH] fix: remove memory leak by adding deleteAllNodes --- data_structures/avltree.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/data_structures/avltree.cpp b/data_structures/avltree.cpp index 836f0f667..51dd1cb53 100644 --- a/data_structures/avltree.cpp +++ b/data_structures/avltree.cpp @@ -64,9 +64,8 @@ node *minValue(node *root) { /** Balanced Insertion */ node *insert(node *root, int item) { - node *nn = createNode(item); if (root == NULL) - return nn; + return createNode(item); if (item < root->data) root->left = insert(root->left, item); else @@ -115,6 +114,15 @@ node *deleteNode(node *root, int key) { return root; } +/** Calls delete on every node */ +void deleteAllNodes(const node *const root) { + if (root) { + deleteAllNodes(root->left); + deleteAllNodes(root->right); + delete root; + } +} + /** LevelOrder (Breadth First Search) */ void levelOrder(node *root) { std::queue q; @@ -144,5 +152,6 @@ int main() { root = deleteNode(root, 4); // Deletin key with value 4 std::cout << "\nLevelOrder: "; levelOrder(root); + deleteAllNodes(root); return 0; }