Em có đoạn code như thế này ạ.
#include <iostream>
using namespace std;
class Node
{
public:
int data;
Node* left;
Node* right;
Node(int data): data(data), left(NULL), right(NULL) {};
void add(Node* root, int data)
{
Node* newNode = new Node(data);
root->left = newNode;
}
void remove(Node* root)
{
Node *f = root->left;
delete(f);
f = NULL;
cout<<root->left->data;
}
};
int main()
{
Node* newNode= new Node(1);
newNode->add(newNode,2);
newNode->remove(newNode);
return 0;
}
Đây chỉ là đoạn code demo thui nên hơi xấu ạ. Và vấn đề em muốn hỏi là trong cái hàm remove, nếu em để delete(f); f = NULL; thì node lá mà em cần xóa lại không phải là NULL ạ. Nó vẫn in ra 1 giá trị ngẫu nhiên. Nhưng khi em thay bằng delete(root->left); root->left = NULL; thì nó lại thành công ạ? Em thấy trong mấy hàm removeAt trong danh sách liên kết, nó cũng cho temp = Node cần xóa rùi delete temp, vậy thì lại NULL được còn của em thì không? Em xin chân thành cảm ơn