SlideShare a Scribd company logo
1 of 32
Chương 5

 Cấu trúc dữ liệu cây
5.1. Định nghĩa


       Cây
       Câ là một cấu t ú t
              ột ấ trúc trong đó b gồm các nút đượ
                                 bao ồ  á út được
       liên kết với nhau theo hệ thống phân cấp, trong đó nút
       có cấp cao nhất được gọi là nút gốc và nút có cấp thấp
       nhất được gọi là các nút lá
                                lá.




19/12/2008                    Cấu trúc dữ liệu 1                2
5.1. Định nghĩa




19/12/2008        Cấu trúc dữ liệu 1   3
5.1. Định nghĩa

      • Thuật ngữ:
      - Nút cha (parents node) của một node là nút có cấp
        cao hơn nó một bậc
                       bậc.
      - Nút con (child node) của một node là nút có cấp nhỏ
        hơn nó một bậc
                   bậc.
      - Nút gố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ủa 1 nú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                   Cấu trúc dữ liệu 1                 4
5.2. Cây nhị phân
   5.2.1.
   5 2 1 Khái niệm về cây nhị phân

      Cây nhị phân là một cây mà mỗi nút có không quá 2 nút
                                  ỗ
      con




19/12/2008                 Cấu trúc dữ liệu 1                 5
5.2. Cây nhị phân tìm kiếm
   5.2.2.
   5 2 2 Cây nhị phân tìm kiếm

      Cây nhị phân tìm kiếm là 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á
                                                          Giá
      trị của nút cha luôn lớn hơn giá trị tất cả nút con bên
      trái và nhỏ hơn giá trị của tất cả nút con bên phải”.




19/12/2008                   Cấu trúc dữ liệu 1                 6
5.2. Cây nhị phân
   5.2.2.
   5 2 2 Cây nhị phân tìm kiếm




19/12/2008          Cấu trúc dữ liệu 1   7
5.2. Cây nhị phân
   5.2.2.
   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
      struct Node
      {
           int key;
           Node * left, * right;
      };

      typedef Node *pNode;
      struct T
        t  t Tree
      {
           pNode root;
      };
19/12/2008                Cấu trúc dữ liệu 1   8
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
      Khởi tạo cây
      void
        id    Initial (
                iti l (Tree &t)
                             t)
      {
             t.root = NULL;
      }
      Kiểm tra cây rỗng
      int    isEmpty (Tree t)
      {
             return (t root == NULL);
                    (t.root
      }
19/12/2008                Cấu trúc dữ liệu 1    9
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
      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
                                                  trái,
      thì sang phải.
      - So sánh với nút gốc củ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                   Cấu trúc dữ liệu 1                   10
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
      Thêm ộ ú à â
      Thê một nút vào cây
      int    Ins (pNode &r, int k)
      {
             if (!r)      //r==NULL
                          //
             {
                   pNode p = new Node;
                   p -> key = k;
                      >
                   p -> left = p -> right = NULL;
                   r = p;
                   return 1;
             }
             if (r -> key == k)return 0;
             if (r -> key > k) return Ins (r->left,k);
                (       y     )            (       , )
             else         return Ins (r->right,k);
      }
19/12/2008                  Cấu trúc dữ liệu 1           11
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
      Thêm một nút vào cây
      int
      i t    Insert (
                  t (Tree &t, i t k)
                           t int
      {
             return Insert (t.root,k);
      }




19/12/2008                Cấu trúc dữ liệu 1    12
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
      Thêm một nút vào cây
      int
      i t    Insert (
                  t (Tree &t, i t k)
                           t int
      {
             return Ins (t.root,k);
      }




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<<"Nhap nut can them: “;cin>>k;
           if (k!=-1)
             if (Insert(t k))
                (Insert(t,k))
                 cout<<"Thanh cong"<<endl;
             else
                 cout<< Nut
                 cout<<"Nut da co trong cay"<<endl;
                                        cay <<endl;
             }while (k!=-1);
      }
19/12/2008                 Cấu trúc dữ liệu 1         14
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

      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
      void LNR (pNode r)
      {
           if (!r)
                 return;
           lnr(r->left);
           cout<<r->key<<" ";
           lnr(r->right);
      }
      void LNR(Tree t)
      {
           LNR(t.root);
           LNR(t     t)
      }
19/12/2008                Cấu trúc dữ liệu 1    16
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ìm khóa k có trong cây hay không
      int Search(pNode r,int k)
      {
            if (!r)     return 0;
            if (r->key == k) return 1;
            if (r->key > k)
                  return Search(r->left,k);
            else
                  return Search(r->right,k);
      }

      int Search(Tree t,int k)
      {
            return Search(t.root,k);
      }
19/12/2008                 Cấu trúc dữ liệu 1   17
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
      Xóa một nút X
      - X là nút lá: chỉ đơn giản hủy X vì nó không móc nối
      đến hầ
      đế phần tử nào khá
                    à khác.




19/12/2008                 Cấu trúc dữ liệu 1                 18
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
      Xóa một nút X
      - X chỉ có 1 nút con: trước khi hủy X ta móc nối cha của
      X với con d nhất của nó.
          ới     duy hấ         ó




19/12/2008                  Cấu trúc dữ liệu 1                   19
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
      Xóa một nút X
      - X có đủ cả 2 con: không thể hủy trực tiếp do X có đủ 2
      con ⇒ hủy gián tiếp. Thay vì hủy X, ta sẽ tìm một phần
                         ế                                  ầ
      tử thế mạng Y. Phần tử này có tối đa một con. Thông tin
      lưu tại
      l t i Y sẽ đ
                 ẽ được chuyển lê l t i X S đó nút bị
                           h ể lên lưu tại X. Sau đó, út
      hủy thật sự sẽ là Y giống như 2 trường hợp đầu. Vấn đề
      là phải chọn Y sao cho khi lưu Y vào vị trí của 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 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 cân bằng
      Nhận xét
      • Một cây rất khó đạt được trạng thái cân bằng hoàn toàn và cũng
      rất dễ mất cân bằng vì khi thêm hay hủy các nút trên cây có thể
      làm cây mất cân bằng (xác suất rất lớn), chi phí cân bằng lại cây
                 ấ        ằ           ấ ấ                   ằ
      lớn vì phải thao tác trên toàn bộ cây.
      • Trong trường hợp xấu nhất ta chỉ phải tìm qua log2n phần tử (n
      là số nút trên cây).
      • Do CCBHT là một cấu trúc kém ổn định nên trong thực tế không
      thể sử dụng. Nhưng ưu điểm của nó lại rất quan trọng. Vì vậy, cần
      đưa ra một CTDL khác có đặc tính giống CCBHT nhưng ổn định
      hơn.
      h

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 (Adelson – Velskii – Landiis)
      Khai báo:
      struct       Node
      {
             int key;
             int bal; //-1: lệch trái, 0: cân bằng, 1: lệch phải
             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ả 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 mất cân bằng:
       • Hướng giải quyết của 2 trường hợp là tương tự nhau nên ta
                gg q y               g ợp         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

More Related Content

Recently uploaded

Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảohoanhv296
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngYhoccongdong.com
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...Nguyen Thanh Tu Collection
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢImyvh40253
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxhoangvubaongoc112011
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Featured

Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 

Featured (20)

Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 

Chuong 5 cau truc du lieu cay

  • 1. Chương 5 Cấu trúc dữ liệu cây
  • 2. 5.1. Định nghĩa Cây Câ là một cấu t ú t ột ấ trúc trong đó b gồm các nút đượ bao ồ á út được liên kết với nhau theo hệ thống phân cấp, trong đó nút có cấp cao nhất được gọi là nút gốc và nút có cấp thấp nhất được gọi là các nút lá lá. 19/12/2008 Cấu trúc dữ liệu 1 2
  • 3. 5.1. Định nghĩa 19/12/2008 Cấu trúc dữ liệu 1 3
  • 4. 5.1. Định nghĩa • Thuật ngữ: - Nút cha (parents node) của một node là nút có cấp cao hơn nó một bậc bậc. - Nút con (child node) của một node là nút có cấp nhỏ hơn nó một bậc bậc. - Nút gố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ủa 1 nú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 Cấu trúc dữ liệu 1 4
  • 5. 5.2. Cây nhị phân 5.2.1. 5 2 1 Khái niệm về cây nhị phân Cây nhị phân là một cây mà mỗi nút có không quá 2 nút ỗ con 19/12/2008 Cấu trúc dữ liệu 1 5
  • 6. 5.2. Cây nhị phân tìm kiếm 5.2.2. 5 2 2 Cây nhị phân tìm kiếm Cây nhị phân tìm kiếm là 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á Giá trị của nút cha luôn lớn hơn giá trị tất cả nút con bên trái và nhỏ hơn giá trị của tất cả nút con bên phải”. 19/12/2008 Cấu trúc dữ liệu 1 6
  • 7. 5.2. Cây nhị phân 5.2.2. 5 2 2 Cây nhị phân tìm kiếm 19/12/2008 Cấu trúc dữ liệu 1 7
  • 8. 5.2. Cây nhị phân 5.2.2. 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 struct Node { int key; Node * left, * right; }; typedef Node *pNode; struct T t t Tree { pNode root; }; 19/12/2008 Cấu trúc dữ liệu 1 8
  • 9. 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 Khởi tạo cây void id Initial ( iti l (Tree &t) t) { t.root = NULL; } Kiểm tra cây rỗng int isEmpty (Tree t) { return (t root == NULL); (t.root } 19/12/2008 Cấu trúc dữ liệu 1 9
  • 10. 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 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 trái, thì sang phải. - So sánh với nút gốc củ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 Cấu trúc dữ liệu 1 10
  • 11. 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 Thêm ộ ú à â Thê một nút vào cây int Ins (pNode &r, int k) { if (!r) //r==NULL // { pNode p = new Node; p -> key = k; > p -> left = p -> right = NULL; r = p; return 1; } if (r -> key == k)return 0; if (r -> key > k) return Ins (r->left,k); ( y ) ( , ) else return Ins (r->right,k); } 19/12/2008 Cấu trúc dữ liệu 1 11
  • 12. 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 Thêm một nút vào cây int i t Insert ( t (Tree &t, i t k) t int { return Insert (t.root,k); } 19/12/2008 Cấu trúc dữ liệu 1 12
  • 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 Thêm một nút vào cây int i t Insert ( t (Tree &t, i t k) t int { return Ins (t.root,k); } 19/12/2008 Cấu trúc dữ liệu 1 13
  • 14. 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<<"Nhap nut can them: “;cin>>k; if (k!=-1) if (Insert(t k)) (Insert(t,k)) cout<<"Thanh cong"<<endl; else cout<< Nut cout<<"Nut da co trong cay"<<endl; cay <<endl; }while (k!=-1); } 19/12/2008 Cấu trúc dữ liệu 1 14
  • 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 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
  • 16. 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 void LNR (pNode r) { if (!r) return; lnr(r->left); cout<<r->key<<" "; lnr(r->right); } void LNR(Tree t) { LNR(t.root); LNR(t t) } 19/12/2008 Cấu trúc dữ liệu 1 16
  • 17. 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ìm khóa k có trong cây hay không int Search(pNode r,int k) { if (!r) return 0; if (r->key == k) return 1; if (r->key > k) return Search(r->left,k); else return Search(r->right,k); } int Search(Tree t,int k) { return Search(t.root,k); } 19/12/2008 Cấu trúc dữ liệu 1 17
  • 18. 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 Xóa một nút X - X là nút lá: chỉ đơn giản hủy X vì nó không móc nối đến hầ đế phần tử nào khá à khác. 19/12/2008 Cấu trúc dữ liệu 1 18
  • 19. 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 Xóa một nút X - X chỉ có 1 nút con: trước khi hủy X ta móc nối cha của X với con d nhất của nó. ới duy hấ ó 19/12/2008 Cấu trúc dữ liệu 1 19
  • 20. 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 Xóa một nút X - X có đủ cả 2 con: không thể hủy trực tiếp do X có đủ 2 con ⇒ hủy gián tiếp. Thay vì hủy X, ta sẽ tìm một phần ế ầ tử thế mạng Y. Phần tử này có tối đa một con. Thông tin lưu tại l t i Y sẽ đ ẽ được chuyển lê l t i X S đó nút bị h ể lên lưu tại X. Sau đó, út hủy thật sự sẽ là Y giống như 2 trường hợp đầu. Vấn đề là phải chọn Y sao cho khi lưu Y vào vị trí của 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
  • 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 1 21
  • 22. 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 22
  • 23. 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
  • 24. 5.2. Cây nhị phân 5.2.3. 5 2 3 Cây nhị phân cân bằng Nhận xét • Một cây rất khó đạt được trạng thái cân bằng hoàn toàn và cũng rất dễ mất cân bằng vì khi thêm hay hủy các nút trên cây có thể làm cây mất cân bằng (xác suất rất lớn), chi phí cân bằng lại cây ấ ằ ấ ấ ằ lớn vì phải thao tác trên toàn bộ cây. • Trong trường hợp xấu nhất ta chỉ phải tìm qua log2n phần tử (n là số nút trên cây). • Do CCBHT là một cấu trúc kém ổn định nên trong thực tế không thể sử dụng. Nhưng ưu điểm của nó lại rất quan trọng. Vì vậy, cần đưa ra một CTDL khác có đặc tính giống CCBHT nhưng ổn định hơn. h 19/12/2008 Cấu trúc dữ liệu 1 24
  • 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 (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
  • 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: struct Node { int key; int bal; //-1: lệch trái, 0: cân bằng, 1: lệch phải Node *left,*right; }; 19/12/2008 Cấu trúc dữ liệu 1 26
  • 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) Khai báo: typedef Node *pNode; struct AVLTree { pNode root; }; 19/12/2008 Cấu trúc dữ liệu 1 27
  • 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 1: cây T lệch 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
  • 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 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
  • 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: • Hướng giải quyết của 2 trường hợp là tương tự nhau nên ta gg q y g ợp g ự chỉ giải quyết Trường hợp 1 19/12/2008 Cấu trúc dữ liệu 1 30
  • 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 31
  • 32. 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