1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 4: Cây nhị phân

40 22 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cây nhị phân
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Cấu trúc dữ liệu và thuật toán
Thể loại bài giảng
Định dạng
Số trang 40
Dung lượng 11,63 MB

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

Nội dung

Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 4 trình bày các kiến thức liên quan đến cây nhị phân. Các nội dung chính trong chương này gồm có: Cấu trúc cây, cây nhị phân, cây nhị phân tìm kiếm. Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.

Trang 1

Chương 4 CÂY NHỊ PHÂN

4.1 Cấu trúc cây

4.1.1 ðịnh nghĩa 4.1.2 Một số khái niệm cơ bản

4.2 Cây nhị phân

4.2.1 ðịnh nghĩa 4.2.2 Một số tính chất của cây nhị phân 4.2.3 Biểu diễn cây nhị phân

4.3 Cây nhị phân tìm kiếm

4.3.1 ðịnh nghĩa 4.3.2 Các tính chất 4.3.2 Các thao tác trên cây nhị phân tìm kiếm

4.4 Bài tập

Trang 2

4.1 Cấu Trúc Cây

4.1.1 ðịnh nghĩa cây 4.1.2 Một số khái niệm cơ bản

Trang 3

4.1.1 ðịnh nghĩa cây

ðịnh nghĩa 1: Một cây là tập hợp hữu hạn các nút trong

ñó có một nút ñặc biệt gọi là gốc (root) Giữa các nút có một quan hệ phân cấp gọi là "quan hệ cha con".

Nút gốc

Trang 4

Nút gốc

r T1

T2

ðịnh nghĩa 2: Cây ñược ñịnh nghĩa ñệ qui như sau

1 Một nút là một cây và nút này cũng là gốc của cây.

2 Giả sử T1, T2, …,Tn (n 1) là các cây có gốc tương ứng r1, r2,…, rn Khi ñó cây T với gốc r ñược hình thành bằng cách cho r trở thành nút cha của các nút r1, r2,…, rn

Trang 5

5.1.2 Một số khái niệm cơ bản

Bậc của một nút: Là số con của nút ñó

Bậc của một cây: Là bậc lớn nhất của các nút có trên

cây ñó (số cây con tối ña của một nút thuộc cây) Cây có

bậc n thì gọi là cây n - phân

Cây bậc 2 hay còn gọi là cây nhị phân

Trang 7

 Mức của một nút

Mức (gốc (T0)) =0

Gọi T1, T2, , Tn là các cây con của T0

Khi ñó Mức (T1) = Mức (T2) = = Mức (Tn) = Mức (T0) +1

 Chiều cao của cây: Là số mức lớn nhất có trên cây ñó

Cây có chiều cao là 3

Trang 8

 ðường ñi: Dãy các ñỉnh n1,n2, .,nk gọi là ñường ñinếu ni là cha của ni+1 (1 ≤ i ≤ k-1

 ðộ dài của ñường ñi: Là số nút trên ñường ñi -1

ðộ dài ñường ñi là 3

Trang 9

 Cây ñược sắp – Cây có thứ tự: Trong một cây, nếucác cây con của mỗi ñỉnh ñược sắp theo một thứ nhấtñịnh, thì cây ñược gọi là cây ñược sắp (cây có thứ tự)

A

5

Trang 10

4.2 Cây Nhị Phân

4.2.1 ðịnh nghĩa4.2.2 Một số tính chất của cây nhị phân4.2.3 Biểu diễn cây nhị phân

Trang 11

Cây nhị phân là cây mà mỗi nút có tối ña hai cây con ðối với cây con của một nút có phân biệt cây con trái và cây con phải.

4.2.1 ðịnh Nghĩa

Trang 12

4.2.1 Một Số Tính Chất Của Cây Nhị Phân

 Số lượng tối ña các nút có ở mức i trên cây nhị phân là

2 i -1 (i 1)

 Số lượng nút tối ña trên 1 cây nhị phân có chiều cao h là

2 h -1(h 1 )

Trang 13

4.2.3 Biễu Diễn Cây Nhị Phân

 Lưu trữ kế tiếp

Phương pháp tự nhiên nhất ñể biểu diễn cây nhị phân

là chỉ ra ñỉnh con trái và ñỉnh con phải của mỗi ñỉnh

Ta có thể sử dụng một mảng ñể lưu trữ các ñỉnh của cây nhị phân

Mỗi ñỉnh của cây ñược biểu gồm ba giá trị

 Infor: Mô tả thông tin gắn với mỗi ñỉnh

 Letf : Chỉ ñỉnh con trái

 Right: Chỉ ñỉnh con phải

Trang 15

Nếu cây nhị phân ñầy ñủ Có thể lưu trữ cây nàybằng mãng 1 chiều

Trang 16

Nếu cây nhị phân không ñầy ñủ thì cách lưu trữ nàykhông thích hợp vì phí nhiều bộ nhớ.

Trang 17

 Lưu trữ móc nối

Cách lưu trữ này khắc phục nhược ñiểm của cách lưutrữ kế tiếp ñồng thời phản ánh ñược dạng tự nhiên củacây Cách lưu trữ này một phần tử có qui tắc sau:

 Infor: Mô tả thông tin gắn với mỗi ñỉnh

 Letf : Con trỏ trỏ tới cây con trái

 Right: Con trỏ trỏ tới cây con phải

Trang 18

4.3 Cây Nhị Phân Tìm Kiếm

4.3.1 ðịnh nghĩa

4.3.2 Các tính chất

4.3.3 Các thao tác trên cây nhị phân tìm kiếm

Trang 19

4.3.1 ðịnh Nghĩa

Cây nhị phân tìm kiếm (CNPTK) là cây nhị phân thoả mãnñồng thời các ñiều kiện:

 Khoá các ñỉnh thuộc cây con trái nhỏ hơn khoá nút gốc

 Khoá nút gốc nhỏ hơn (hoặc bằng) khoá các ñỉnh thuộccây con phải

 Cây con trái và cây con phải của gốc cũng là CNPTK

Cây nhị phân ñược sử dụng vào nhiều mục ñích khác nhau Tuy nhiên việc sử dụng cây nhị phân ñể lưu giữ và tìm kiếm thông tin vẫn là một trong những áp dụng quan trọng nhất của cây nhị phân

Trang 20

 Nút có giá trị nhỏ nhất nằm ở trái nhất của cây

 Nút có giá trị lớn nhất nẳm ở phải nấht của cây

4.3.2 Các Tính Chất

Trang 21

4.3.3 Các Thao Tác Trên Cây NPTK

 Dựng cây

 Duyệt cây

 Dựng cây từ kết quả duyệt cây

 Xóa nút trên cây

Trang 22

 Dựng cây

 Nếu nút cần thêm < nút ñang xét thì thêm về bên trái

 Ngược lại thì thêm về bên phải

Trang 23

 Duyệt Cây

Duyệt theo thứ tự trước (NLR)

- Thăm gốc

- Duyệt câycon trái theo thứ trước

- Duyệt cây con phải theo thư tự trước

Trang 24

1 3 4 6 7 15 23 36 40

Duyệt theo thứ tự giữa (LNR )

- Duyệt câycon trái theo thứ giữa

- Thăm gốc

- Duyệt cây con phải theo thư tự giữa

Trang 25

1 4 6 3 23 15 40 36 7

Duyệt theo thứ tự sau (LRN)

- Duyệt câycon trái theo thứ sau

- Duyệt cây con phải theo thư tự sau

- Thăm gốc

Trang 26

 Dựng cây từ kết quả duyệt cây

Dựng cây từ kết quả Duyệt theo thứ tự trước (NLR)

- Chọn giá trị ñầu tiên làm nút gốc

- Lần lượt ñưa các giá trị còn lại từ trái sang phải vào cây theo nguyên tắc dựng cây

Trang 28

 Xóa nút trên cây

Xóa nút có khóa là :1

Xóa tiếp nút có khóa là :23

Xóa nút lá.

Trang 29

4 1

7

40 23

4 1

 Xóa nút có 1 cây con

Trang 30

40 15

23

6

4 1

Trang 31

Cách 1: Tìm nút trái nhất của cây con phải

Xóa nút 3 (Dùng nút 4 trhay thế)

7

40 15

23

5 1

6

Trang 32

Cách 2: Tìm nút trái phải của cây con trái

Xóa nút 36 (Dùng nút 23 thay thế)

7

40 15

5

4 1

6

Trang 33

4.4 Cài ðặt Cây NPTK

Cấu trúc chương trình

Trang 34

Các lưu ý khi cài ñặt

- Bước 1: Khai báo kiểu dữ liệu biểu diễn cây

- Bước 2: Xây dựng hàm ñưa dữ liệu (nhập) vào cây

- Bước 3: Xây dựng các thao tác: Duyệt, Tìm, Hủy

Các lưu ý khác

- Trước khi tạo nút phải xin cấp phát vùng nhớ

- Trước khi tạo cây phải khởi tạo cây rỗng

- Trước khi kết thúc chương trình phải hủy cây (Giải phóng vùng nhớ)

Trang 35

 Khai báo cây NPTK kiểu dữ liệu cho nút là số nguyên

Trang 36

 Thêm nút vào cây

Trang 37

 Duyệt cây theo thứ tự NLR

Tại nút t ñang xét nếu khác rỗng thì

In giá trị t

Duyệt cây con bên trái của t theo thứ tự NLR

Duyệt cây con bên phải củ t theo thứ tự NLR

Trang 38

 Duyệt cây theo thứ tự LNR

Tại nút t ñang xét nếu khác rỗng thì

Duyệt cây con bên trái của t theo thứ tự LNR

In giá trị t

Duyệt cây con bên phải củ t theo thứ tự LNR

Trang 39

 Duyệt cây theo thứ tự LRN

Tại nút t ñang xét nếu khác rỗng thì

Duyệt cây con bên trái của t theo thứ tự LRN

Duyệt cây con bên phải củ t theo thứ tự LRN

In giá trị t

Ngày đăng: 10/05/2021, 13:33

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