Giáo trình phân tích quy trình ứng dụng thuật toán có thành phần dữ liệu newdata p3

5 7 0
Giáo trình phân tích quy trình ứng dụng thuật toán có thành phần dữ liệu newdata p3

Đang tải... (xem toàn văn)

Thông tin tài liệu

Tham khảo tài liệu ''giáo trình phân tích quy trình ứng dụng thuật toán có thành phần dữ liệu newdata p3'', công nghệ thông tin, cơ sở dữ liệu phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

O W w N y bu to c nút nút phải tìm cách chuyển nút gốc nút nút cần hủy thành nút gốc nút khác tiến hành hủy nút - Trường hợp nút cần hủy có 01 nút gốc chuyển nút gốc thành nút gốc nút cha nút cần hủy - Trường hợp nút cần hủy có nút gốc phải chuyển 02 nút gốc thành nút gốc nút khác với nút cần hủy Việc chọn nút để làm nhiệm vụ nút cha nút gốc tùy vào trường hợp cụ thể nhị phân mà lựa chọn cho phù hợp Do vậy, thao tác hủy nút trình bày cụ thể loại cụ thể trình bày phần sau 5.2.3 Cây nhị phân tìm kiếm (Binary Searching Tree) A Khái niệm – Cấu trúc liệu: Cây nhị phân tìm kiếm nhị phân có thành phần khóa nút lớn thành phần khóa tất nút trái nhỏ thành phần khóa tất nút phải Ví dụ: Hình ảnh sau hình ảnh nhị phân tìm kiếm BSTree 60 25 65 19 10 40 NULL NULL NULL NULL 30 NULL 44 NULL NULL 50 15 NULL NULL NULL NULL Từ khái niệm có số nhận xét: - Cấu trúc liệu nhị phân tìm kiếm cấu trúc liệu để biểu diễn nhị phân nói chung typedef struct BST_Node { T Key; BST_Node * BST_Left; // Vùng liên kết quản lý địa nút gốc trái BST_Node * BST_Right; // Vùng liên kết quản lý địa nút gốc phải } BST_OneNode; Trang: 163 w d o m C lic k Giáo trình: Cấu Trúc Dữ Liệu Giải Thuật o o c u -tr a c k w w d o m C lic k to bu y N w w w h a n g e Vi e ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c O W N y bu k lic Để quản lý nhị phân tìm kiếm cần quản lý địa nút gốc cây: BST_Type BSTree; - Khóa nhận diện (Key) nút nhị phân tìm kiếm đôi khác (không có tượng trùng khóa) Tuy nhiên trường hợp cần quản lý nút có khóa trùng nhị phân tìm kiếm mở rộng cấu trúc liệu nút cách thêm thành phần Count để ghi nhận số lượng nút trùng khóa Khi đó, cấu trúc liệu để quản lý nhị phân tìm kiếm mở rộng sau: typedef struct BSE_Node { T Key; int Count; BSE_Node * BSE_Left; // Vùng liên kết quản lý địa nút gốc trái BSE_Node * BSE_Right; // Vùng liên kết quản lý địa nút gốc phải } BSE_OneNode; typedef BSE_OneNode * BSE_Type; quản lý nhị phân tìm kiếm cách quản lý địa nút gốc: BSE_Type BSETree; - Nút bên trái nút có giá trị khóa nhận diện nhỏ nút bên phải nút có giá trị khóa nhận diện lớn nhị phân tìm kiếm - Trong nhị phân tìm kiếm thứ tự duyệt Left – Root – Right thứ tự duyệt theo tăng dần giá trị Key nút thứ tự duyệt Right – Root – Left thứ tự duyệt theo giảm dần giá trị Key nút B Các thao tác nhị phân tìm kiếm: a Tìm kiếm cây: Giả sử cần tìm nhị phân tìm kiếm xem có tồn nút có khóa Key SearchData hay không Để thực thao tác vận dụng thuật toán tìm kiếm nhị phân: Do đặc điểm nhị phân tìm kiếm nút, Key nút khác với SearchData SearchData tìm thấy trái nút SearchData nhỏ Key nút phải nút SearchData lớn Key nút - Thuật toán tìm kiếm nút nhị phân tìm kiếm: B1: CurNode = BSTree B2: IF (CurNode = NULL) or (CurNode->Key = SearchData) Thực Bkt B3: IF (CurNode->Key > SearchData) // Tìm kiếm trái CurNode = CurNode->BST_Left B4: ELSE // Tìm kiếm phải CurNode = CurNode->BST_Right B5: Lặp lại B2 Trang: 164 d o m w typedef BST_OneNode * BST_Type; o m o c C k Giáo trình: Cấu Trúc Dữ Liệu Giải Thuật lic C c u -tr a c k w w d o w to to bu y N w w w h a n g e Vi e ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c O W N y bu k lic - Minh họa thuật toán: Giả sử cần tìm kiếm nút có thành phần liệu 30 nhị phân tìm kiếm sau: SearchData = 30 CurNode BSTree 60 25 65 19 10 40 NULL NULL NULL 30 NULL NULL 44 NULL NULL 50 15 NULL NULL NULL NULL CurNode->Key > SearchData // Tìm kiếm trái ⇒ CurNode = CurNode->BST_Left BSTree CurNode 60 25 65 19 10 40 NULL NULL NULL NULL 30 NULL 44 NULL NULL 50 15 NULL NULL NULL NULL Trang: 165 d o m w Bkt: Kết thúc o m o c C k Giáo trình: Cấu Trúc Dữ Liệu Giải Thuật lic C c u -tr a c k w w d o w to to bu y N w w w h a n g e Vi e ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c O W N y bu to lic CurNode->Key < SearchData // Tìm kiếm phải ⇒ CurNode = CurNode->BST_Right BSTree 60 CurNode 19 10 40 NULL NULL 65 NULL 30 NULL NULL 44 NULL NULL 50 15 NULL NULL NULL NULL CurNode->Key > SearchData // Tìm kiếm trái ⇒ CurNode = CurNode->BST_Left BSTree 60 25 19 10 CurNode NULL NULL 65 NULL 40 NULL 30 NULL 44 NULL NULL 50 15 NULL CurNode->Key = SearchData NULL NULL NULL ⇒ Thuật toán kết thúc (Tìm thấy) Trang: 166 d o m o c 25 C w o c u -tr a c k w k Giáo trình: Cấu Trúc Dữ Liệu Giải Thuaät w w d o m C lic k to bu y N w w w h a n g e Vi e ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c O W N y bu to lic Bây giả sử cần tìm kiếm nút có thành phần liệu 35 nhị phân tìm kiếm trên: SearchData = 35 BSTree 60 25 65 19 10 40 NULL NULL NULL 30 NULL NULL 44 NULL NULL 50 15 NULL NULL NULL NULL CurNode->Key > SearchData // Tìm kiếm trái ⇒ CurNode = CurNode->BST_Left BSTree CurNode 60 25 65 19 10 40 NULL NULL NULL NULL 30 NULL 44 NULL NULL 50 15 NULL NULL NULL NULL Trang: 167 d o m o c CurNode C w o c u -tr a c k w k Giáo trình: Cấu Trúc Dữ Liệu Giải Thuật w w d o m C lic k to bu y N w w w h a n g e Vi e ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c ... nhị phân tìm kiếm: a Tìm kiếm cây: Giả sử cần tìm nhị phân tìm kiếm xem có tồn nút có khóa Key SearchData hay không Để thực thao tác vận dụng thuật toán tìm kiếm nhị phân: Do đặc điểm nhị phân. .. e Vi e ! XC er PD F- c u -tr a c k c O W N y bu k lic - Minh họa thuật toán: Giả sử cần tìm kiếm nút có thành phần liệu 30 nhị phân tìm kiếm sau: SearchData = 30 CurNode BSTree 60 25 65 19 10... lý nút có khóa trùng nhị phân tìm kiếm mở rộng cấu trúc liệu nút cách thêm thành phần Count để ghi nhận số lượng nút trùng khóa Khi đó, cấu trúc liệu để quản lý nhị phân tìm kiếm mở rộng nhö

Ngày đăng: 10/05/2021, 23:27

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan