Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
656,45 KB
Nội dung
Chương 5 Cấutrúcdữ liệucây Cấu trúc dữ liệu cây 5.1. Định nghĩa Câ là ột ấ tú t đó b ồ á út đượ Câ y là m ột c ấ u t r ú c t rong đó b ao g ồ mc á cn út đượ c liên kếtvới nhau theo hệ thống phân cấp, trong đónút có cấp cao nhất đượcgọilànútgốcvànútcócấpthấp nhất được gọi là các nút lá nhất được gọi là các nút lá . 19/12/2008 2Cấu trúc dữ liệu 1 5.1. Định nghĩa 19/12/2008 3Cấu trúc dữ liệu 1 5.1. Định nghĩa • Thuật ngữ : • Thuật ngữ : - Nút cha (parents node) củamột node là nút có cấp cao hơn nó một bậc cao hơn nó một bậc . - Nút con (child node) củamộtnodelànútcócấpnhỏ hơn nó một bậc hơn nó một bậc . -Nútgốc (root) là nút không có nút cha. - Nút lá (leaf – leaves) là nút không có nút con. -C ấp của1nút ( level of a node ) l à các liên k ế t đ ể đi p ( ) từ nút gốc đến nút đó. 19/12/2008 4Cấu trúc dữ liệu 1 5.2. Cây nhị phân 5 2 1 Khái niệm về cây nhị phân 5 . 2 . 1 . Khái niệm về cây nhị phân ỗ Cây nhị p hân là mộtcâymàm ỗ i nút có không quá 2 nút con 19/12/2008 5Cấu trúc dữ liệu 1 5 2 2 Cây nhị phân tìm kiếm 5.2. Cây nhị phân tìm kiếm 5 . 2 . 2 . Cây nhị phân tìm kiếm Cây nhị phân tìm kiếmlàmột cây nhị phân trong đónút của nó được tổ chức để luôn thỏa tính chất sau đây “ Giá của nó được tổ chức để luôn thỏa tính chất sau đây Giá trị của nút cha luôn lớnhơn giá trị tấtcả nút con bên trái và nhỏ hơn giá trị củatấtcả nút con bên phải”. 19/12/2008 6Cấu trúc dữ liệu 1 5 2 2 Cây nhị phân tìm kiếm 5.2. Cây nhị phân 5 . 2 . 2 . Cây nhị phân tìm kiếm 19/12/2008 7Cấu trúc dữ liệu 1 5 2 2 Cây nhị phân tìm kiếm 5.2. Cây nhị phân 5 . 2 . 2 . Cây nhị phân tìm kiếm Biểu diễn cây nhị phân tìm kiếm Biểu diễn cây nhị phân tìm kiếm struct Node { int key; Node * left, * right; } ; } ; typedef Node *pNode; tt T s t ruc t T ree { pNode root; 19/12/2008 8Cấu trúc dữ liệu 1 }; 5 2 2 Cây nhị phân tìm kiếm 5.2. Cây nhị phân 5 . 2 . 2 . Cây nhị phân tìm kiếm Các thao tác trên cây nhị phân tìm kiếm Các thao tác trên cây nhị phân tìm kiếm Khởitạocây id iti l ( t) vo id In iti a l ( Tree &t) { t.root = N ULL ; } Kiểmtracâyrỗng int isEmpty (Tree t) { return (t root == NULL) ; 19/12/2008 9Cấu trúc dữ liệu 1 return (t . root == NULL) ; } 5 2 2 Cây nhị phân tìm kiếm 5.2. Cây nhị phân 5 . 2 . 2 . Cây nhị phân tìm kiếm Các thao tác trên cây nhị phân tìm kiếm Các thao tác trên cây nhị phân tìm kiếm Thêm một nút vào cây Giả sử cần thêm 1 nút có khóa k vào cây t. - So sánh với nút gốc : nếu nhỏ hơn thì sang trái lớn hơn So sánh với nút gốc : nếu nhỏ hơn thì sang trái , lớn hơn thì sang phải. -Sosánhvớinútgốccủa cây con bên trái (phải) và lặp lại quá trình trên cho đến khi tìm được vị trí thích hợp . 19/12/2008 10Cấu trúc dữ liệu 1 lại quá trình trên cho đến khi tìm được vị trí thích hợp . [...]... 5 2 2 Cây nhị phân tìm kiếm Các thao tác trên cây nhị phân tìm kiếm Duyệt cây NLR (Node – Left – Right): 44 18 13 15 37 23 40 88 59 55 71 108 LNR (Left – Node – Right): 13 15 18 23 37 40 44 55 59 71 88 108 LRN (Left – Right – Node): 15 13 23 40 37 18 55 71 59 108 88 44 19/12/2008 Cấu trúc dữ liệu 1 15 5.2 Cây nhị phân 5. 2.2 5 2 2 Cây nhị phân tìm kiếm Các thao tác trên cây nhị phân tìm kiếm Duyệt cây. .. X cây X, vẫn là CNPTK Có 2 phần tử thỏa mãn yêu cầu: + Phần tử nhỏ nhất (trái nhất) trên cây con phải phải + Phần tử lớn nhất (phải nhất) trên cây con trái 19/12/2008 Cấu trúc dữ liệu 1 20 5. 2 Cây nhị phân 5. 2.2 5 2 2 Cây nhị phân tìm kiếm Có thể dùng 15 để thế mạng 19/12/2008 Cấu trúc dữ liệu 1 21 5. 2 Cây nhị phân 5. 2.2 5 2 2 Cây nhị phân tìm kiếm Có thể dùng 15 để thế mạng 19/12/2008 Cấu trúc dữ liệu. .. 19/12/2008 Cấu trúc dữ liệu 1 24 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Cây AVL (Adelson – Velskii – Landiis) Định nghĩa: Cây nhị phân tìm kiếm cân bằng là cây mà tại mỗi nút của nó độ cao của cây con trái và của cây con ạ ộ y y phải chênh lệch không quá một Cây AVL Cây nhị phân tìm kiếm cân bằng AVL 19/12/2008 Cấu trúc dữ liệu 1 25 5.2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Cây AVL... g ự chỉ giải quyết Trường hợp 1 19/12/2008 Cấu trúc dữ liệu 1 30 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Cây AVL (Adelson – Velskii – Landiis) Các trường hợp mất cân bằng: 19/12/2008 Cấu trúc dữ liệu 1 31 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Cây AVL (Adelson – Velskii – Landiis) Các trường hợp mất cân bằng: 19/12/2008 Cấu trúc dữ liệu 1 32 ... Node *left,*right; }; 19/12/2008 Cấu trúc dữ liệu 1 26 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Cây AVL (Adelson – Velskii – Landiis) Khai báo: typedef Node *pNode; struct AVLTree { pNode root; }; 19/12/2008 Cấu trúc dữ liệu 1 27 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Cây AVL (Adelson – Velskii – Landiis) Các trường hợp mất cân bằng: • Trường hợp 1: cây T lệch về bên trái (có 3 khả... về bên trái (có 3 khả năng) g ợp y ệ ( g) 19/12/2008 Cấu trúc dữ liệu 1 28 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Cây AVL (Adelson – Velskii – Landiis) Các trường hợp mất cân bằng: • Trường hợp 2: cây T lệch về bên phải (có 3 khả năng) g ợp y ệ p ( g) 19/12/2008 Cấu trúc dữ liệu 1 29 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Cây AVL (Adelson – Velskii – Landiis) Các trường hợp... dữ liệu 1 22 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân cân bằng Định nghĩa Cây cân bằng hoàn toàn là cây nhị phân tìm kiếm mà tại mỗi nút của nó, số nút của cây con trái chênh lệch không quá một so với số nút của cây con phải kh á ới ố ú h i Cây Cân Bằng Hoàn Toàn Cây CCBHT thì h ~ log2n Cây nhị phân tìm kiếm cân bằng hoàn toàn 19/12/2008 Cấu trúc dữ liệu 1 23 5. 2 Cây nhị phân 5. 2.3 5 2 3 Cây nhị phân... 19/12/2008 Cấu trúc dữ liệu 1 13 5. 2 Cây nhị phân 5. 2.2 5 2 2 Cây nhị phân tìm kiếm Các thao tác trên cây nhị phân tìm kiếm Tạo cây void CreateTree (Tree &t) { int k; do { cout . 6Cấu trúc dữ liệu 1 5 2 2 Cây nhị phân tìm kiếm 5. 2. Cây nhị phân 5 . 2 . 2 . Cây nhị phân tìm kiếm 19/12/2008 7Cấu trúc dữ liệu 1 5 2 2 Cây nhị phân tìm kiếm 5. 2. Cây nhị phân 5 . 2 . 2 . Cây nhị phân tìm kiếm Biểu diễn cây nhị phân tìm kiếm Biểu diễn cây nhị phân tìm kiếm struct. 4Cấu trúc dữ liệu 1 5. 2. Cây nhị phân 5 2 1 Khái niệm về cây nhị phân 5 . 2 . 1 . Khái niệm về cây nhị phân ỗ Cây nhị p hân là mộtcâymàm ỗ i nút có không quá 2 nút con 19/12/2008 5Cấu trúc dữ. Chương 5 Cấutrúcdữ liệucây Cấu trúc dữ liệu cây 5. 1. Định nghĩa Câ là ột ấ tú t đó b ồ á út đượ Câ y là m ột c ấ u t r ú c t rong đó b ao