N u nh khi kh o sát c u trúc d li u d ng danh sách liên k t ta không quan tâm nhi u n bài toán duy t qua t t c các ph n t c a chúng thì bài toán duy t cây h t s c quan tr ng. Nó là c t lõi c a nhi u thao tác quan trong khác trên cây. Do cây nh phân là m t c u trúc d li u phi tuy n nên bài toán duy t cây là bài toán không t m th ng.
Có nhi u ki u duy t cây khác nhau, và chúng c&ng có nh ng ng d ng khác nhau. i v i cây nh phân, do c u trúc qui c a nó, vi c duy t cây ti p c n theo ki u qui là h p lý và n gi n nh t. Sau ây chúng ta s# xem xét m t s ki u duy t thông d ng.
Có 3 ki u duy t chính có th áp d ng trên cây nh phân: duy t theo th t tr c (NLR), th t gi a (LNR) và th t sau (LRN). Tên c a 3 ki u duy t này c t d a trên trình t c a vi c th m nút g c so v i vi c th m 2 cây con. T ng t nh v y ta có 3 cách duy t khác là: NRL, RNL, RLN.
Duy t theo th t tr c (node-left-right)
Ki u duy t này tr c tiên th m nút g c sau ó th m các nút c a cây con trái r i n cây con ph i. Th t c duy t có th trình bày n gi n nh sau: (trong m c này vi c x lý các nút ch là in giá tr c a ph n t ó)
Duy t theo th t gi a (Left- Node-Right)
Ki u duy t này tr c tiên th m các nút c a cây con trái sau ó th m nút g c r i n cây con ph i. Th t c duy t có th trình bày n gi n nh sau:
• S d ng danh sách liên k t
Ví d 3.1: Parentheses Matching
M i ‘(‘, ‘{‘, ‘[‘ ph i i ôi v i ‘)’, ‘}’, ‘]’.
Input: Cho m ng X g m n ký hi u, m i ký hi u là d u ngo c ho c là bi n ho c là phép toán s h c ho c là s .
Ouput:True ho c False
Ví d 3.2: Bài toán %i c s
Vi t m t s n trong h m th p phân thành s trong h m c s b. Ví d :5310=1101012.
Gi i thu t dùng ng-n x!p gi i bài trên
1. Ch s hàng n v c a n là n% b, push vào stack 2. Thay n b'ng n/b
3. L p l i các b c 1,2 cho n khi n/b=0 4. ,y các s ra kh"i ng n x p và in chúng.
Ví d 3.3: Bài toán tính giá tr bi u th c s h c.
Ký hi u trung t (infix Notation)
M i phép toán hai ngôi c t gi a các toán h ng. M i phép toán m t ngôi i ngay tr c toán h ng. Ví d : -2 + 3*5 ⇔ (-2) + (3*5)
Vi c tính giá tr c a bi u th c trung t s# c th c hi n nh s d ng hai ng n x p có ki u d li u khác nhau:
• M t ng n x p gi các toán h ng
• Ng n x p kia gi các phép toán.
Vi c tính giá tr c a bi u th c trung t s# c th c hi n nh s d ng hai ng n x p có ki u d li u khác nhau:
• M t ng n x p gi các toán h ng
• Ng n x p kia gi các phép toán.
Ký hi u h u t (Postfix Notation)
• Còn c g i là ký pháp o Ba Lan trong ó các toán h ng c t tr c các phép toán.
• Ví d : ký pháp h u t ab*c+ t ng ng v i ký pháp trung t a*b+c
• Không c n s d ng các d u ngo c v%n xác nh c trình t th c hi n các phép toán trong bi u th c s h c
Tính giá tr bi u th c d ng h u t (s d ng ng n x p toán hang):
• G p toán h ng thì n p vào (push) giá tr c a nó vào ng n x p
• G p phép toán thì th c hi n phép toán này v i 2 toán h ng c l y ra (pop) t ng n x p
• C(t gi giá tr (push) tính c vào ng n x p (ngh-a là 3 ký hi u c thay b'ng m t toán h ng).
• Ti p t c duy t cho n khi trong ng n x p ch còn m t giá tr duy nh t- chính là k t qu c a bi u th c.
Th i gian tính c a bi u th c là bao nhiêu ?
Gi i thu t chuy n bi u di)n t d ng trung t sang d ng h u t : 1. Duy t bi u th c t trái sang ph i
2. N u g p toán h ng: a ra t c thì
3. N u g p d u m* ngo c: n p nó vào ng n x p
4. N u g p d u óng ngo c: ,y ký hi u ra kh"i ng n x p cho n khi g p d u m* ngo c u tiên c ,y ra.
5. N u g p phép toán: a ra kh"i ng n x p t t c các phép toán cho n khi g p phép toán có t t u tiên th p h n ho c g p phép toán có tính k t h p ph i có cùng th t
u tiên. Sau ó n p phép toán ang xét vào ng n x p.
6. Khi duy t h t bi u th c a t t c các phép toán còn l i ra kh"i ng n x p.
Ví d 3.4: Ng-n x!p và qui M t trong nh ng ng d ng quan tr ng c a ng n x p là nó c s d ng t! ch c th c hi n các gi i thu t qui. Có th nói: M i hàm qui u có th cài t s d ng ng n x p và l p M i hàm l p có s d ng ng n x p u có th cài t s d ng qui. Ví d (ng-n x!p và qui)
Cho x là s nguyên và n là s nguyên d ng, c n tính xn. HD: N u tính tr c ti p thì c n n phép nhân
Sau ây là m t gi i thu t qui gi i:
Phân tích:
-N u n là s ch7n thì: xn=x(n/2) x x(n/2)
Công th c trên giúp ta chuy n vi c tính xn v vi c tính l&y th a gi m i m t n a c a x và sau ó th c hi n 1 phép nhân. -N u n là s l8 thì: xn=x(n-1)/2x x(n-1)/2 x x. A B D E G H I O P Q N K L M J Nút nhánh: Là nút có b c khác 0 và không ph i là g c . Ví d B,D,H…là các nút nhánh M c c a m t nút: m c (g c (T) ) = 0. g i T1, T2, T3, ... , Tn là các cây con c a T0 m c (T1) = m c (T2) = ... = m c (Tn) = m c (T0) + 1. ch+ng h n nút A có m c là 0, D có m c là 1, G có m c là 2, J có m c là 3. dài ng i t g c n nút x: B'ng s nút trên ng i ó tr i 1. ch+ng h n ng i t A n G là 2, ng i t A n K là 3.
Chi u cao c a m t cây
Là s m c l n nh t c a nút có trên cây ó c ng thêm 1 ch+ng h n cây trên có chi u cao là 4.
4.2.CÂY NH1 PHÂN 4.2.1. "nh ngh'a 4.2.1. "nh ngh'a
Cây nh& phân là cây mà m i nút có t i a 2 cây con
Trong th c t th ng g p các c u trúc có d ng cây nh phân. M t cây t!ng quát có th bi u di)n thông qua cây nh phân.