Thao tác xoá trong MX-Quadtrees

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 42)

Thao tác xoá trong một MX-Quadtrees là một thao tác tƣơng đối đơn giản bởi vì toàn bộ các điểm đều nằm ở cấp cuối ( đều là các nút lá). Lƣu ý rằng nếu N là một nút không phải lá trong cây MX-Quadtrees với gốc là T thì khi đó vùng biểu diễn bởi nút N có ít nhất một điểm thuộc cây. Nếu muốn xoá một điểm (x, y) từ cây T, việc đầu tiên là thiết lập liên kết tƣơng ứng của cha nút N tới NIL. Nói cách khác nếu M là cha của N và M.DIR trỏ tới N thì thiết lập M.DIR=NIL và cho lại N để giải phóng vùng nhớ. Bây giờ tiến hành kiểm tra xem bốn trƣờng liên kết của M đều là NIL? Nếu đúng, khảo sát cha của M ( gọi là P). Vì M là con của P, tìm đƣờng liên kết DIR1 sao cho P.DIR1=M. Sau đó thiết lập P.DIR1=NIL và tiếp tục kiểm tra xem toàn bộ các trƣờng liên kết của P có là NIL? Nếu đúng tiếp tục tiến trình. Toàn bộ tiến trình đòi hỏi phải duyệt qua cây một lần từ đỉnh xuống đáy (để tìm nút sẽ xoá) và một lần đi ngƣợc cây. Nhƣ vậy toàn bộ tiến trình là O(k) lần.

Hãy xem xét tiến trình làm việc ra sao với cây MX trên hình 2.12d. Giả sử, yêu cầu phải xoá D. Việc xoá nút D không khó khăn vì có thể tìm ra D và đặt NIL

vào trƣờng liên kết SE của cha nó (cái trỏ đến D). Để xác định xem cha của D có hỏng? Kiểm tra xem bốn trƣờng liên kết nó là NIL? Không đúng vậy vì C và D có cùng cha.

Mặt khác, xem xét việc huỷ bỏ A từ cây tứ phân MX trong hình 2.12d. Khi đặt NIL vào trƣờng NE của cha nút A, nhận thấy rằng cha của A kết thúc bởi 4 trƣờng rỗng. Nhƣ vậy cha của A bị hỏng. Khi điều đó xảy ra, khảo sát cha của A (là gốc) và đặt NIL vào liên kết NW của gốc. Khi kiểm tra xem có toàn bộ bốn trƣờng liên kết là NIL? Điều đó không xảy ra và dẫn tới không thể bị phá vỡ.

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 42)

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

(120 trang)