Xóa Node lá trong cây

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

Đâu, code đâu :eyes:

Em ấn Shift Enter mà em chắc không giữ trúng nút Shift :((

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?