Cõy tỡm kiếm nhị phõn thụng thường cú những thuận lợi lớn về mặt
lưu trữ và truy xuất dữ liệu trong phộp toỏn tỡm kiếm thờm vào hay loại bỏ một phần tử. Do đú, cõy tỡm kiếm nhị phõn xem ra là một
cấu trỳc lưu trữ dữ liệu tốt.
Tuy nhiờn trong một số trường hợp cõy tỡm kiếm nhị phõn cú một số
hạn chế. Nú hoạt động tốt nếu dữ liệu được chốn vào cõy theo thứ tự
ngẫu nhiờn. Tuy nhiờn, nếu dữ liệu được chốn vào theo thứ tự đó
được sắp xếp sẽ khụng hiệu quả. Khi cỏc trị số cần chốnđóđược sắp
xếp thỡ cõy nhị phõn trở nờn khụng cõn bằng. Khi cõy khụng cõn
bằng, nú mất đi khả năng tỡm kiếm nhanh (hoặc chốn hoặc xúa) một
phần tử đó chọ
Hỡnh 3.1Cỏc nodeđược chốn theo thứ tự tăng dần
Chỳng ta khảo sỏt một cỏch giải quyết vấn đề của cõy khụng cõn
bằng: đú là cõyđỏ đen, là cõy tỡm kiếm nhị phõn cú thờm một vài
đặc điểm.
Cú nhiều cỏch tiếp cận khỏc để bảo đảm cho cõy cõn bằng: chẳng
hạn cõy 2-3-4. Tuy vậy, trong phần lớn trường hợp, cõy đỏ đen là cõy cõn bằng hiệu quả nhất, ớt ra thỡ khi dữ liệu được lưu trữ trong
bộ nhớ chứ khụng phải trong những tập tin.
Trước khi khảo sỏt cõyđỏ đen, hóy xem lại cõy khụng cõn bằng được tạo ra nhưthế nàọ
Những node này tự sắp xếp thành một đường khụng phõn nhỏnh.
Bởi vỡ mỗi node lớn hơn nodeđóđược chốn vào trước đú, mỗi node
là con phảị Khi ấy, cõy bị mất cõn bằng hoàn toàn. Nếu ta chốn những mục (item) theo thứ tự giảm dần, mỗi node sẽ là con trỏi của
node cha của chỳng - cõy sẽ bị mất cõn bằng về phớa bờn kiạ
Độ phức tạp:
Khi cõy một nhỏnh, sẽ trở thành một danh sỏch liờn kết, dữ liệu sẽ là một chiều thay vỡ hai chiềụ Trong trường hợp này, thời gian truy
xuất giảm về O(N), thay vỡ O(logN)đối với cõy cõn bằng.
Để bảo đảm thời gian truy xuất nhanh O(logN) của cõy, chỳng ta
cần phải bảo đảm cõy luụn luụn cõn bằng (ớt ra cũng là cõy gần cõn
bằng). Điều này cú nghĩa là mỗi node trờn cõy phải cú xấp xỉ số
node con bờn phải bằng số node con bờn trỏị
Một cỏch tiếp cận giải quyết vấn đề cõn bằng lại cõy: đú là cõyđỏ đen-là cõy tỡm kiếm nhị phõn được bổ sung một số đặc điểm.
Trong cõyđỏ đen, việc cõn bằng được thực thi trong khi chốn, xúạ Khi thờm một phần tử thỡ thủ tục chốn sẽ kiểm tra xem tớnh chất cõn
bằng của cõy cú bị vi phạm hay khụng. Nếu cú, sẽ xõy dựng lại cấu
trỳc cõỵ Bằng cỏch này, cõy luụn luụnđược giữ cõn bằng.
CHƯƠNG 3 – CÂYĐỎ ĐEN