Câu hỏi về xóa 1 node trong cây nhị phân tìm kiếm

mọi người cho mình hỏi ý nghĩa của đoạn code này về xóa node 1 con và node lá trong cây nhị phân vói ạ phần đẹ quy tìm data thì e hỏi rồi còn phần cập nhật mối liên kết của node cha với các node con của node cần xóa thì vẫn mông lung

void XoaNode(TREE& t, int data) // data chính là giá trị của cái node cần xóa
{
	if (t == NULL)
	{
		return;
	}
	else
	{
		if (data < t->data)
		{
			XoaNode(t->pLeft, data); //
		}
		else if (data > t->data)
		{
			XoaNode(t->pRight, data); 
		}
		else
		{
			NODE* X = t; 
			if (t->pLeft == NULL)
			{
				t = t->pRight;
			}
			else if (t->pRight == NULL)
			{
				t = t->pLeft;
			}
			delete X;
		}
	}
}

As requested

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