Professional Documents
Culture Documents
Data Structure-Tree Traversals
Data Structure-Tree Traversals
سرفصل
• تعريف
پيمايش اول سطح Breadth-first •
پيمايش اول عمق Depth-first •
پيمايص In-Order •
پيمايص Post-Order •
پيمايص Pre-Order •
بازيابی درخت دودويی •
2
تعريف
• مفًُم پيمايص درخت بٍ ريش دستيابی ػىاصر درين آرايٍ ي يا ليىک ليست بٍ يک
ترتيب مطخص اطالق می گردد.
3
پيمايش اول سطح Breadth-first
در پيمايص ايل سطح ) Breadth-first Search (BFSابتذا َمٍ وًدَای ػمك kام •
درخت از چپ بٍ راست پيمايص ضذٌ ي سپس بٍ سراؽ ػمك k+1ام ميرييم.
مطخصات •
– برای پيمايص ايل سطح از ابسار صف استفادٌ می ضًد.
– زمان اجرای آن ) ϴ(nکٍ nبرابر تؼذاد وًدَاست
– ميسان حافظٍ الزم برابر )ϴ(m
کٍ mبرابر ماکسيمم ػىاصر در يک ػمك است.
4
پيمايش اول سطح Breadth-first
بٍ مىظًر پيادٌ سازی پيمايص ايل سطح )(BFS •
– ابتذا يک صف از وًع ػىاصر آرايٍ می سازيم
– وًد ريطٍ را درين صف لرار می دَيم.
– تا َىگامی کٍ صف خالی وطذٌ
ػىصر ايل صف را deleteمی کىيم. •
ايه ػىصررا در خريجی چاپ کردٌ •
فرزوذان ايه ػىصر را (از چپ بٍ راست) بٍ درين صف Insertمی کىيم •
• DGI
GIEF
ABHC
ABHCD
IEF ABHCDG
EFJK ABHCDGI
FJK ABHCDGIE
JK ABHCDGIEF
K ABHCDGIEFJ
ABHCDGIEFJK
5
پيمايش اول عمق Depth-first
در پيمايص ايل ػمك ) Depth-first Search (DFSاز ريطٍ ضريع کردٌ ي با در وظر •
گرفته چپ تريه فرزوذ لبل از ماللات َمسادَای ديگر ،ػمك بٍ ػمك در درخت پاييه می
رييم ي وًدَا را پيمايص می کىيم.
مطخصات •
– برای پيادٌ سازی DFSاز پطتٍ استفادٌ می ضًد
– زمان اجرای آن ) ϴ(nکٍ nبرابر تؼذاد وًدَاست
– ميسان حافظٍ الزم برابر )O(bh
کٍ hبرابر ػمك ي bماکسيمم درجٍ درخت است.
6
پيمايش اول عمق Depth-first
بٍ مىظًر پيادٌ سازی پيمايص ايل ػمك )(DFS •
– ابتذا يک پطتٍ از وًع ػىاصر آرايٍ می سازيم
– وًد ريطٍ را درين پطتٍ لرار می دَيم.
– تا َىگامی کٍ پطتٍ خالی وطذٌ
از پطتٍ يک ػىصر را Popمی کىيم. •
ايه ػىصررا در خريجی چاپ کردٌ •
فرزوذان ايه ػىصر را (از راست بٍ چپ) بٍ درين پطتٍ Pushمی کىيم •
• EH
FGH
ABCD
ABCDE
GH ABCDEF
H ABCDEFG
IM ABCDEFGH
J K LM ABCDEFGHI
KLM ABCDEFGHIJ
LM ABCDEFGHIJK
M ABCDEFGHIJKL
ABCDEFGHIJKLM 7
پيمايش درخت دودويی
برای پيمايص درخت َای ديدييی سٍ پارامتر زير را تؼريف می کىيم. •
– : Lزير درخت سمت چپ
– : Vممذار خًد وًد
– : Rزير درخت سمت راست
با تًجٍ بٍ تؼاريف باال سٍ وًع پيمايص برای درخت َای ديدييی مًجًد است •
)(LVR -ميان يوذی In-Order
-پيطًوذی (VLR) Pre-Order
)(LRV -پسًوذی Post-Order
8
پيمايش ميان وندی In-Order
)(LVR
در پيمايص ميان وندی In-Orderبر اساس الگًی LVRپيمايص را از وًد ريطٍ ضريع ي •
بر ريی َر کذام از زير درخت َايص اػمال می کىذ
مطخصات •
– برای پيادٌ سازی از تابغ بازگطتی استفادٌ می ضًد
– زمان اجرای آن ) ϴ(nکٍ nبرابر تؼذاد وًدَاست
9
In-Order پيمايش ميان وندی
(LVR)
In-Order پيادٌ سازی پيمايص •
template <typename Type>
void Binary_tree<Type>::in_order_traversal() const {
if ( left() != nullptr ) {
left()->in_order_traversal();
} L V R LVR
cout << value(); A, B, C, D, E, F, G, H, I, J
if ( right() != nullptr ) { L V R •
right()->in_order_traversal();
}
}
10
پيمايش پيشوندی Pre-Order
)(VLR
در پيمايص پيشوندی Pre-Orderبر اساس الگًی VLRپيمايص را از وًد ريطٍ ضريع •
ي بر ريی َر کذام از زير درخت َايص اػمال می کىذ
مطخصات •
– برای پيادٌ سازی از تابغ بازگطتی استفادٌ می ضًد
– زمان اجرای آن ) ϴ(nکٍ nبرابر تؼذاد وًدَاست
11
Pre-Order پيمايش پيشوندی
(VLR)
Pre-Order پيادٌ سازی پيمايص •
template <typename Type>
void Binary_tree<Type>::pre_order_traversal() const {
cout << value();
12
پيمايش پسوندی Post-Order
)(LRV
در پيمايص پسوندی Post-Orderبر اساس الگًی LRVپيمايص را از وًد ريطٍ ضريع •
ي بر ريی َر کذام از زير درخت َايص اػمال می کىذ
مطخصات •
– برای پيادٌ سازی از تابغ بازگطتی استفادٌ می ضًد
– زمان اجرای آن ) ϴ(nکٍ nبرابر تؼذاد وًدَاست
13
Post-Order پيمايش پسوندی
(LRV)
Post-Order پيادٌ سازی پيمايص •
template <typename Type>
void Binary_tree<Type>::post_order_traversal() const {
if ( left() != nullptr ) {
left()->post_order_traversal();
} L R V LRV
if ( right() != nullptr ) { A, C, B, F, E, D, H, J, I, G
right()->post_order_traversal();
} L R V •
cout << value();
}
14
بازيابی درخت دودويی
برای بازيابی درخت دودويی با استفاده از پيمايش های آن به دو پيمايش زير نياز •
است:
– يکی از دي پيمايص Pre-Orderي Post-Order
(با استفادٌ از ايه پيمايص وًد ريطٍ َر زير درخت مطخص می ضًد) •
– پيمايص In-Orderدرخت
با استفادٌ از ايه پيمايص وًدَای سمت چپ ي راست َر زير درخت مطخص می ضًد •
• برای مثال
پيمايص VLRبرابر
G, D, B, A, C, E, F, I, H, J
V L R •
پيمايص LVRبرابر
A, B, C, D, E, F, G, H, I, J
L V R •
15