Thao tác xoá cây tứ phân điểm

Một phần của tài liệu Cấu trúc dữ liệu đa phương tiện và mô hình cơ sở dữ liệu hình ảnh (Trang 37)

Khi xóa nút N từ cây tứ phân có gốc T cũng có những nét giống nhƣ khi thực hiện với cây 2-d để tìm một nút thay thế thích hợp cho các nút không phải là lá. Đối với trƣờng hợp các nút lá thì việc xoá không có vấn đề gì: Đặt trƣờng liên kết tƣơng ứng của nút cha của N trỏ tới NIL và giải phóng không gian lƣu trữ.

Việc xoá trong cây tứ phân là rất phức tạp. Hình 2.9 chỉ ra tại sao lại phức tạp. Đầu tiên mỗi nút trong cây tứ phân thể hiện trong một vùng và vùng này đƣợc định nghĩa hơi khác so với cây 2-d. Đối với cây 2-d nó đủ để kết hợp 4 ràng buộc dƣới dạng xc1, x<c2, yc3, y<c4 với các hằng số c1,….,c4. Do đó nhƣ trong trƣờng hợp

cây 2-d khi mở rộng nodetype thành cấu trúc mới newnodetype, trong trƣờng hợp này cũng có thể mở rộng cấu trúc nút qtnodetype thành một cấu trúc mới

newnodetype,với cùng với kiểu trƣờng trên đây (XLB,YLB,XUB,YUB).

newqtnodetype = record INFO: infotype; XVAL, YVAL: real;

XLB, YLB, XUB, YUB: real {-, +}; NW, SW, NE, SE: newqtnodetype

end

Khi chèn nút N vào cây T phải đảm bảo những điểm dƣới đây:

Nếu N là gốc của cây T, thì N.XLB=-, N.YLB=-, N.XUB=+, và N.YUB=+.

2. Nếu P là cha của N thì khi đó bảng 2.2 dƣới đây mô tả những giá trị của các trƣờng XLB, YLB, XUB, YUB của N tuỳ thuộc vào việc N là con NW, SW, NE hay SE của P, trong đó sử dụng ký hiệu w=(P.XUB-P.XLB) và h=(P.YUB-P.YLB).

Trƣờng hợp N.XLB N.XUB N.YLB N.YUB

N= P.NW P.XLB P.XLB + w x 0.5 P.YLB + h x 0.5 P.YUB

N=P.SW P.XLB P.XLB + w x 0.5 P.YLB P.YLB + h x 0.5

N=P.NE P.XLB + w x 0.5 P.XUB P.YLB + h x 0.5 P.YUB

N=P.SE P.XLB + w x 0.5 P.XUB P.YLB P.YLB + h x 0.5

Bảng 2.2

Để vận dụng thành công kỹ thuật xoá trong với cây tứ phân điểm thì khi xoá một nút trong N phải tìm một nút thay thế R từ một trong các cây con của N ( từ một trong N.NW, N.SW, N.NE, N.SE) sao cho mỗi nút R1 trong N.NW là ở phía tây bắc của R, và mỗi nút R2 trong N.SW ở phía tây nam R, mỗi nút R3 trong N.NE ở phía đông bắc của R và mỗi nút R4 trong N.SE ở phía đông nam của R.

Hãy xem xét cây tứ phân trên hình 2.8 và hình 2.9. Giả sử, muốn xoá Banja Luka từ cây tứ phân này. Trong trƣờng hợp này, nút thay thế thực tế đƣợc tìm là

Teslic. Không nút nào khác thoả mãn những điều kiện đã đặt ra ở trên. Tuy nhiên, không phải luôn có khả năng tìm đƣợc một nút thay thế. Do vậy trong trƣờng hợp

xấu nhất việc xoá một nút N có thể yêu cầu việc chèn lại một số nút trong cây con trỏ bởi N.NE, N.SE, N.NW và N.SW.[17]

Một phần của tài liệu Cấu trúc dữ liệu đa phương tiện và mô hình cơ sở dữ liệu hình ảnh (Trang 37)

Tải bản đầy đủ (PDF)

(120 trang)