30/09/2018, 18:50

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.

Gió viết 21:06 ngày 30/09/2018
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;
}
viết 21:00 ngày 30/09/2018

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

Bài liên quan
0