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.2.3. Duyệt cây nhị phân 4.3. Cây nhị phân tìm kiếm 4.3.1. Cây nhị phân tìm kiếm 4.3.2. Các thao tác trên cây nhị phân tìm kiếm Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 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 Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 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 Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net Nút gốc r1 r2 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 Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 4 4.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 Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 5 Nút gốc: Là nút có không có nút cha Nút lá: Là nút có bậc bằng 0 Nút nhánh: Là nút có bậc khác 0 và không phải là nút gốc Nút gốc Nút lá Nút nhánh Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 6 Mức của một nút Mức (gốc (T 0 )) =0 Gọi T 1 , T 2 , , T n là các cây con của T 0 . Khi ñó Mức (T 1 ) = Mức (T 2 ) = = Mức (T n ) = Mức (T 0 ) +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 Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 7 ðường ñi: Dãy các ñỉnh n 1 ,n 2 , ,n k gọi là ñường ñi nếu n i là cha của n i+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 Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 8 Cây ñược sắp – Cây có thứ tự: Trong một cây, nếu cá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 B C 5 3 8 Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 9 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.2.4. Duyệt cây nhị phân Khoa CNTT Trường TC TÂY NAM Á © Dương Thành Phết-www.thayphet.net 10 [...]... 4.3 Cây Nh Phân Tìm Ki m 4.3.1 Cây nh phân tìm ki m 4.3.2 Các thao tác trên cây nh phân tìm ki m 22 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 4.3.1 Cây Nh Phân Tìm Ki m ð 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 c cây con ph i Cây. ..4.2.1 ð nh Nghĩa 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 11 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 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: 2i (i ≥ 0) S nút lá t i ña trên cây có chi u cao h la: 2h S lư ng nút t i ña c a cây có chi u cao h: 2h+1-1(h≥1... NAM Á 4.3.2 Các Thao Tác Trên Cây NPTK Khai báo c u trúc cây D ng cây – Thêm nút vào cây Duy t cây D ng cây t k t qu duy t cây Tìm ki m nút có giá tr x Xóa nút có giá tr x trên cây H y cây 25 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 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... h: 2h+1-1(h≥1 ) 12 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 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... t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Chương trình chính g i các th t c d ng và duyêt cây 33 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 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 7 3 1 6 4 36 15 23 40 34 © Dương Thành Ph... 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 ) 26 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Khai báo c u cây typedef struct TNODE { Key;// là kiêu dư liêu cho key struct NODE *pLeft, *pRight; } *TREE; Ví v khai báo cây NPTK bi u di n các nút là s nguyên typedef struct... N u cây nh phân ñ y ñ Có th b ng mãng 1 chi u lưu tr cây này 15 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á N u cây nh phân không ñ y ñ thì cách lưu tr không thích h p vì phí nhi u b nh này 16 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 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ưu tr k ti p ñ ng th i ph n ánh ñư c d ng t nhiên c a cây. .. ph i Cây con trái và cây con ph i c a g c cũng là CNPTK Cây NPTK ñư c s d ng vào nhi u m c ñích khác nhau Tuy nhiên vi c s d ng cây NPTK ñ lưu gi và tìm ki m thông tin v n là m t trong nh ng ng d ng quan tr ng nh t 23 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Các Tính Ch t 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 Min Max 24 © Dương... TÂY NAM Á D ng cây – Thêm nút vào 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 28 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á 29 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Duy t Cây Duy t theo th t trư c (NLR) T i nút t ñang xét n u khác r ng - In giá tr nút t - Duy t câycon trái theo th trư c - Duy t cây con ph i theo... NAM Á Duy t cây nh phân Duy t theo th t trư c (NLR) T i nút t ñang xét n u khác r ng - 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 void NLR(TREE t) { if (t != NULL) { ; NLR(t->pleft); NLR(t->pright); } } 19 © Dương Thành Ph t-www.thayphet.net Khoa CNTT Trư ng TC TÂY NAM Á Duy t theo th t gi a (LNR) T i nút t ñang xét n u khác r ng - Duy t cây con trái . 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ị. cây nhị phân 4.2.3. Biểu diễn cây nhị phân 4.2.3. Duyệt cây nhị phân 4.3. Cây nhị phân tìm kiếm 4.3.1. Cây nhị phân tìm kiếm 4.3.2. Các thao tác trên cây nhị phân tìm kiếm Khoa CNTT Trường TC TÂY. Thành Phết-www.thayphet.net 9 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.2.4. Duyệt cây nhị phân Khoa CNTT Trường TC TÂY NAM Á ©