1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình hướng dẫn phân tích dùng thuật toán thêm một nút vào bên trái có thành phần dữ liệu newdata p1 potx

5 328 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 178,92 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tạo mới một nút: Thao tác này hoàn toàn tương tự như đối với thao tác tạo mới một nút trong danh sách liên kết đôi.. Giả sử chúng ta cần tạo mới một nút có thành phần dữ liệu là NewData

Trang 1

BinT_Type BinT_Initialize (BinT_Type &BTree) { BTree = NULL;

return (BTree);

}

b Tạo mới một nút:

Thao tác này hoàn toàn tương tự như đối với thao tác tạo mới một nút trong danh sách liên kết đôi Giả sử chúng ta cần tạo mới một nút có thành phần dữ liệu là NewData

- Thuật toán:

B1: BTNode = new BinT_OneNode B2: IF (BTNode = NULL)

Thực hiện Bkt B3: BTNode->BinT_Left = NULL B4: BTNode->BinT_Right = NULL B5: BTNode->Key = NewData Bkt: Kết thúc

- Cài đặt thuật toán:

Hàm BinT_Create_Node có prototype:

BinT_Type BinT_Create_Node(T NewData);

Hàm tạo mới một nút có thành phần dữ liệu là NewData, hàm trả về con trỏ trỏ tới địa chỉ của nút mới tạo Nếu không đủ bộ nhớ để tạo, hàm trả về con trỏ NULL

BinT_Type BinT_Create_Node(T NewData) { BinT_Type BTnode = new BinT_OneNode;

if (BTnode != NULL) { BTnode->BinT_Left = NULL;

BTnode->BinT_Right = NULL;

BTnode->Key = NewData;

} return (BTnode);

}

- Minh họa thuật toán:

Giả sử chúng ta cần tạo nút có thành phần dữ liệu là 30: NewData = 30 BTnode = new BinT_OneNode

BTnode

BTnode->BinT_Left = NULL BTnode->BinT_Right = NULL

thêm một nút vào bên trái cĩ thành phần dữ liệu

newdata

Trang 2

BTnode->Key = NewData

BTnode

30

c Thêm một nút vào trong cây nhị phân:

Giả sử chúng ta cần thêm một nút có giá trị thành phần dữ liệu là NewData vào trong cây nhị phân Việc thêm có thể diễn ra ở cây con trái hoặc cây con phải của cây nhị phân Do vậy, ở đây chúng ta trình bày 2 thao tác thêm riêng biệt nhau:

- Thuật toán thêm 1 nút vào bên trái nhất của cây:

B1: NewNode = BinT_Create_Node (NewData) B2: IF (NewNode = NULL)

Thực hiện Bkt B3: IF (BinTree = NULL) // Cây rỗng B3.1: BinTree = NewNode

B3.2: Thực hiện Bkt B4: Lnode = BinTree B5: IF (Lnode->BinT_Left = NULL) // Cây con trái rỗng B5.1: Lnode->BinT_Left = NewNode

B5.2: Thực hiện Bkt B6: Lnode = Lnode->BinT_Left // Đi theo nhánh cây con trái B7: Lặp lại B5

Bkt: Kết thúc

- Minh họa thuật toán:

Giả sử chúng ta cần thêm nút có thành phần dữ liệu là 17 vào bên trái nhất của cây nhị phân: NewData = 17

Trang 3

B5.1: Lnode->BinT_Left = NewNode

Kết quả sau khi thêm:

BinTree

20

- Cài đặt thuật toán:

Hàm BinT_Add_Left có prototype:

BinT_Type BinT_Add_Left(BinT_Type &BT_Tree, T NewData);

Hàm thực hiện việc thêm vào bên trái nhất trong cây nhị phân BT_Tree một nút có thành phần dữ liệu là NewData, hàm trả về con trỏ trỏ tới địa chỉ của nút mới thêm nếu việc thêm thành công, ngược lại nếu không đủ bộ nhớ, hàm trả về con trỏ NULL

BinT_Type BinT_Add_Left(BinT_Type &BT_Tree, T NewData) { BinT_Type NewNode = BinT_Create_Node(NewData);

if (NewNode == NULL) return (NewNode);

if (BT_Tree == NULL)

Trang 4

BT_Tree = NewNode;

else { BinT_Type Lnode = BT_Tree;

while (Lnode->BinT_Left != NULL) Lnode = Lnode->BinT_Left;

Lnode->BinT_Left = NewNode;

} return (NewNode);

}

- Thuật toán thêm 1 nút vào bên phải nhất của cây nhị phân:

B1: NewNode = BinT_Create_Node (NewData) B2: IF (NewNode = NULL)

Thực hiện Bkt B3: IF (BinTree = NULL) // Cây rỗng B3.1: BinTree = NewNode

B3.2: Thực hiện Bkt B4: Rnode = BinTree B5: IF (Rnode->BinT_Right = NULL) // Cây con phải rỗng B5.1: Rnode->BinT_Right = NewNode

B5.2: Thực hiện Bkt B6: Rnode = Rnode->BinT_Right // Đi theo nhánh cây con phải B7: Lặp lại B5

Bkt: Kết thúc

- Minh họa thuật toán:

Giả sử chúng ta cần thêm nút có thành phần dữ liệu là 21 vào bên phải nhất của cây nhị phân: NewData = 21

Trang 5

B5.1: Rnode->BinT_Right = NewNode

Kết quả sau khi thêm:

BinTree

- Cài đặt thuật toán:

Hàm BinT_Add_Right có prototype:

BinT_Type BinT_Add_Right(BinT_Type &BT_Tree, T NewData);

Hàm thực hiện việc thêm vào bên phải nhất trong cây nhị phân BT_Tree một nút có thành phần dữ liệu là NewData, hàm trả về con trỏ trỏ tới địa chỉ của nút mới thêm nếu việc thêm thành công, ngược lại nếu không đủ bộ nhớ, hàm trả về con trỏ NULL

BinT_Type BinT_Add_Right(BinT_Type &BT_Tree, T NewData)

Ngày đăng: 24/07/2014, 12:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm