Xóa tất cả các nút trên cây?

Mình đang làm bài tập, xây dựng một cây tìm kiếm nhị phân trong đó cấu trúc của một nút trong cây được định nghĩa như sau:

struct Node {
	char data;
	int frequency;
	Node* next;
	Node* left;
	Node* right;

	Node(char data, int frequency, Node* next, Node* left, Node* right) {
		this->data = data;
		this->frequency = frequency;
		this->next = next;
		this->left = left;
		this->right = right;
	}
};

Mình viết hàm hủy cho cây như sau:

void deleteTree(Node* root) {
	if (root == NULL) {
		return;
	}
	if (root->left) {
		deleteTree(root->left);
	}
	else if (root->right) {
		deleteTree(root->right);
	}
	else delete root;
}

~Tree() {
	if (root != NULL) {
		deleteTree(root);
	}
}

Giả sử cây có 1 nút con left và 1 nút con right, khi debug mình thấy nó không delete được nút con left rồi văng ra luôn… Mình nghĩ lệnh “delete” không dùng được cho nút của mình thì phải.

void deleteTree(Node* & root) {
    if (root == NULL) {
        return;
    }
    if (root->left) {
        deleteTree(root->left);
    }
     if (root->right) {
        deleteTree(root->right);
    }
    delete root;
// them vao cuoi
  root=NULL;
}

Còn delete giải phóng các nút nữa chứ b

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