Hello. There is a tree structure:
struct Tree { int value; Tree* left; Tree* right; Tree(int v) { value = v; left = nullptr; right = nullptr; } Tree() { value = 0; left = nullptr; right = nullptr; } };
There is also a function to add a new node:
bool AddNode(Tree* root, int data) { if(root) { if(data < root->value) { AddNode(root->left, data); } else if(data > root->value) { AddNode(root->right, data); } else { return false; } } else { root = new Tree(data); } return true; }
But for some reason there is a memory leak in this line:
root = new Tree(data);
Memory release:
void DeleteTree(Tree* root) { if(root) { DeleteTree(root->left); DeleteTree(root->right); delete root; } }
Please tell me what's wrong.