PDA

View Full Version : Cây nhị phân tìm ->thêm phần tử



bichduyen_nt
14-05-2004, 01:17
Duyên đang gặp rắc rối một chút ở chỗ tạo cây nhị phân tìm kiếm.
Thông thường thì khi cần thêm một phần tử vào cây nhị phân tìm kiếm, nếu phần tử đó đã có trong danh sách rồi thì không cần thêm nữa, nhưng yêu cầu của bài toán là phải thêm vô luôn, ví dụ như có danh sách là 3,10,3,5,6,4 thì trong cây nhị phân tìm kiếm phải có đủ 6 nút, Duyên không biết là cái nút số 3 thứ hai phải để làm sao để có thể thỏa mãn được đó vẫn là cây nhị phân!!!

bete
14-05-2004, 08:19
yêu cầu của bài toán là phải thêm vô luôn
=> như vậy thì bài toán yêu cầu ra sao nếu mình tìm cái nút số 3 (phải trả về cái nút nào) ?

bichduyen_nt
14-05-2004, 18:44
trả về cái nút nào tìm thấy đầu tiên, giống như là gặp nút nào trước là trả về nút đó

bete
15-05-2004, 18:49
Tui 0 nhớ chắc lắm về định nghĩa của cây nhị phân tìm kiếm: giá trị tại 1 nút bất kỳ lớn hơn giá trị tại mọi nút trong cây con trái; và giá trị tại 1 nút bất kỳ nhỏ hơn giá trị tại mọi nút trong cây con phải ?
=> có thể sửa: giá trị tại 1 nút bất kỳ lớn hơn HAY BẰNG giá trị tại mọi nút trong cây con trái; và giá trị tại 1 nút bất kỳ nhỏ hơn giá trị tại mọi nút trong cây con phải ?

Chỉ thắc mắc 1 điều:
trả về cái nút nào tìm thấy đầu tiên
=> mình sẽ 0 bao giờ trả về cái nút thứ hai => có thêm nó vô cây cũng 0 xài tới !?!?

bichduyen_nt
15-05-2004, 23:58
Có nghĩa là thêm dấu >= hay <= vô à, cũng có lý!!!.
"=> mình sẽ 0 bao giờ trả về cái nút thứ hai => có thêm nó vô cây cũng 0 xài tới !?!?" ---> ai biết gì thầy đâu, ra đề vậy đó, chả biết làm gì nữa, chắc là thầy muốn bảo đảm là trong cây sẽ có đầy đủ các nút mà mình muốn nhập, nói về số lượng đó mà, còn giống nhau thì không quan trọng, chắc ý của GV là vậy, chỉ là BT về nhà thôi mà!!!

ntquan
18-05-2004, 00:32
Chào Duyên,
Theo tôi nghĩ, với yêu cầu bài toán vẫn tạo cây nhị phân như bình thương nhưng sửa lại cấu trúc của nút cây nhị phân.
typedef struct tagTNode{
int key ; // khoá của nút
int count = 1 // đếm số lần lặp của nút đó.
struct tagTNode *pLeft;
struct tagTNode *pRight;
}TNODE ;
Bạn đồng ý không ????

bichduyen_nt
18-05-2004, 00:33
à, không hẳn là thế, thế thì không có chuyện gì để nói rồi, tại vì sau khi bạn nhập vô các nút rồi còn phải in ra màn hình sơ đồ các nút trong cây BST mà, vậy thì có nghĩa là nó thật sự là một nút đó bạn à!!!

mctrangwindows
18-05-2004, 01:00
:present: undefinedchào Bích Duyên ..!
tôi nghĩ bài toán hơi lắc léo , hình như chưa gặp bao giờ .Theo định nghĩa CNPTK thì không thể quyết được ..Nhưng tôi có 1 ý như vầy : bạn có thể tìm trong mảng số cho trước những ptử giống nhau và đưa một ptử lên làm root ptử còn lại cho xuống nhánh trái :batman: . bạn nghĩ sao ..?

thonggg
13-03-2009, 08:16
em ko hieu ve cai dat thuc te cac bai tap ve cay nhi phan_hay giup em voi?

chitien
21-12-2009, 08:39
minh lam lai tu cay va kiem tra thu chuong trinh co chay ko va bat dau chinh sua phan cay