Cần giúp đỡ về in cây nhị phân tìm kiếm biểu thị danh sách theo thứ tự

: đề bài em rút gọn lại như vầy :
nhập vào cây nhị phân tìm kiếm danh sách điểm thi đại học theo cấu trúc mã số là các ký tự và điểm thi ví dụ (G,20.25). khóa là mã số . in ra danh sách thí sinh theo thứ tự tăng dần của điểm
Của em phần in ra thứ tự tăng dần theo điểm của em chỉ in ra được những điểm không trùng nhau thôi ạ m.n cho em hỏi có cách nào khác không a cho em ý tưởng hoặc code luôn cũng được ạ;
đây là bài của em:

void help(t l,t &q,t r) 
{
	if(l!='\0')
	{	
		help(l->L,q,r);
		 if(l->diem<q->diem&&l->diem>r->diem) q=l; 
		help(l->R,q,r);
	}

}
void help1(t l,t &q)  // tim nguoi co diem lon nhat trong cay
{
	if(l!='\0')
	{	
		help1(l->L,q);
		if(l->diem>q->diem) q=l;    
		help1(l->R,q);
	}
}
void increase_list(t l,int n)   // n l so nut trong cay
{
t r;
for(int i=0;i<n;i++)   
{
t q=l;
help1(l,q);
help(l,q,r);
r=q;
printf("\n%c",q->ms);
printf("\n%f",q->diem);
}
}

2 Likes

Thay vì mỗi node là cặp (kí tự, số) mà thay bằng (xâu, số). Như thế, nếu có 1 người trùng điểm đã có trên cây, chỉ cần tìm ra node và thêm vào xâu là dc.

4 Likes

đề bài của em là vậy không thay đổi được. nhưng em cũng rất thích ý tưởng của bác

2 Likes

Thế thì nếu có thêm 1 node cùng giá trị với node đã thêm, bạn phải đặt quy tắc thêm vào bên trái hoặc bên phải cho nó.

3 Likes

em xin tiếp nhận ý kiến…

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