Phép xóa một nút

Một phần của tài liệu Chương 4 Tìm kiếm docx (Trang 26 - 30)

Đặt vấn đề: Sau khi xóa xong một nút,

thay đổi cây còn lại vẫn đảm bảo là cây nhị phân tìm kiếm. phân tìm kiếm.

27

4.2.2.3 Phép xóa một nút

Ý tưởng:

– Tìm đến nút có khóa bằng x, gọi V là con trỏ

đến nút này V->element = X

– Xảy ra 2 trường hợp:

• V là nút lá: chỉ cần gỡ bỏ V bằng cách thay nút bên

trái hoặc bên phải của nút cha V = Null

• V là nút một cành: gỡ bỏ V bằng cách sửa lại mối

nối (left hoặc right) ở nút cha của V trỏ xuống nút cháu, cây còn lại vẫn là nhị phân tìm kiếm

• Nút V có đủ cả hai cây con: trường hợp này khá

28

4.2.2.3 Phép xóa một nút

Trường hợp này khóa của nút V chen giữa các khóa của nút cực phải của cây con trái các khóa của nút cực phải của cây con trái và khóa của nút cực trái của cây con phải, vậy gỡ bỏ nút V phải thay thế một nút

khác vào chỗ trống đó để đảm bảo điều

kiện cây tìm kiếm, chỉ có thể thay thế bằng một trong hai nút con trên. Có thể xét một trong hai nút con trên. Có thể xét

trường hợp thay bằng nút cực phải của cây con trái. con trái.

29

4.2.2.3 Phép xóa một nút

 Giải thuật chi tiết:

Với T : cây nhị phân tìm kiếm; X là giá trị cần xóa; V là con trỏ đến nút đang xét.

Xuất phát từ cây gốc V, tìm nút chứa khóa x để loại bỏ, có các trường hợp sau:

- V=Null, không tìm thấy

- X< V.element thực hiện loại bỏ cây bên trái

- X> V.element lặp lại việc tìm để loại bỏ cây bên

phải,

30

4.2.2.3 Phép xóa một nút

Giải thuật chi tiết:

Một phần của tài liệu Chương 4 Tìm kiếm docx (Trang 26 - 30)