2010-07-24 16 views
11

मुझे आश्चर्य है कि क्या वर्तमान में उपयोग की जा रही प्रक्रिया का वर्णन करने के लिए कोई मौजूदा शब्द है। मैं इसे "एक पेड़ को चपटा" कहना चाहता हूं लेकिन मुझे लगता है कि एक बेहतर शब्द या वाक्यांश होना चाहिए।"एक पेड़ को फ़्लैट करने" के लिए एक शब्द खोज रहे हैं

इनपुट:

|--D 
--B 
| |--C 
| 
A-E 
| 
| |--G 
--F 
    |--H 

उत्पादन:

[ [A, B, D] 
    [A, B, C] 
    [A, E] 
    [A, F, G] 
    [A, F, H] ] 

हूं कि इस प्रक्रिया के लिए एक स्थापित नाम है?

+5

प्लाईवुड बनाना? –

+2

+1 - विचार व्यक्त करने के लिए भाषा महत्वपूर्ण है, प्रयास के लिए इंगित करें। – SoftwareGeek

उत्तर

7

पथ गणना के बारे में?

डीएफएस ट्रैवर्सल?

या मेरे पसंदीदा

वृक्ष सरणीकरण!

+2

यह सभी पथों की गणना की तरह दिखता है, इसलिए 'पथ गणना' फिट लगती है। –

0

आपको जड़ से प्रत्येक पत्ते को एक पत्ते पर कब्जा करने के लिए पहली बार गहराई की खोज की आवश्यकता है।

छद्म कोड:

global allPaths = [] 
R = root 
currentPath = [] 
findPaths(R, currentPath) 

findPaths(R, currentPath){ 
if R has no children, 
allPaths.add(currentPath) 

else 
for each child C in R: 
findPaths(C, currentPath + R) 
} 
+0

हां, लेकिन क्या ऐसे फ़ंक्शन के लिए कोई शब्द है जो पथों की सरणी देता है? बहुत अच्छा नहीं हो सकता है। – mwhite

+0

आप "पत्तियों के लिए सभी पथ ढूंढ रहे हैं"। मुझे नहीं लगता कि आप इसके लिए एक शब्द प्राप्त कर सकते हैं। –

+2

पथसूची। बैम! एकल शब्द। – JavadocMD

3

मैं कहना चाहता हूँ तुम सिर्फ पेड़ traversing कर रहे हैं, जबकि वर्तमान नोड के लिए एक रास्ता रखते हुए। जैसे ही आप एक पत्ते पर जाते हैं, आप पत्ते के लिए पूरा रास्ता प्रिंट करते हैं।

मुझे नहीं लगता कि एक विशिष्ट नाम है, लेकिन यह एक बहुत ही सरल ट्रैवर्सल से बहुत अलग नहीं है।

4

कैसे 'हाइड्रेटिंग' (या निर्जलित प्रक्रिया) स्थिति के आधार पर के बारे में?

+0

मुझे यकीन नहीं है कि एक पाठ्यपुस्तक उस सूची में सूचीबद्ध होगी, लेकिन 'नाम' के वास्तविक जमा करने के लिए +1 :-) –

+0

@pst - बहुत सराहना की !! – SoftwareGeek

+1

स्पष्ट रूप से कुछ डरावनी गिरावट आई है। क्या एक नाइट! – SoftwareGeek

2

De-Normalisation सबसे अच्छा प्रतीत होता है। क्योंकि वास्तव में, यदि आप अपनी नई संरचना को देखते हैं तो आपके पास अनावश्यक डेटा है, और यह सीधे वैचारिक विचार पर नक्शा दिखाई देगा।

0

मुझे लगता है कि यह पेड़ के coalescing भागों के रूप में सोचता है।

0

Serializing इनपुट पेड़ है और उत्पादन सूचियों की सूची आप बोली है, तो आप वास्तव में प्रक्रिया के लिए एक वाक्यांश के लिए नहीं देख रहे हैं, तो आप आप subroutine के लिए एक नाम ढूंढ रहे हैं जिसे आप कॉल करते हैं। और इस तरह के एक subroutine का नाम यह होना चाहिए कि यह देता है।

कैसे RootPathsOfLeaves? या इसके पुनर्गठन ...

1

मैं बस "Disjoint Sets" पर एक विकी आलेख में भाग गया और यह शब्द "पथ संपीड़न" है।

अंश:

... दूसरे सुधार, जिसे पथ संपीड़न कहा जाता है, फ़्लैटनिंग का एक तरीका है जब पेड़ की संरचना इस पर उपयोग किया जाता है। विचार यह है कि प्रत्येक नोड रूट नोड के रास्ते पर जाता है, साथ ही रूट नोड पर सीधे संलग्न किया जा सकता है; वे सभी समान प्रतिनिधि साझा करते हैं। इसे प्रभावित करने के लिए, जैसा कि पेड़ को दोबारा घुमाता है, यह प्रत्येक नोड के माता-पिता संदर्भ को संदर्भित करता है कि यह पाया गया है। परिणामी पेड़ बहुत अधिक चापलूसी, भविष्य के संचालन को तेज करता है न केवल इन तत्वों पर बल्कि पर उनको संदर्भित करता है, सीधे या परोक्ष रूप से।

संबंधित मुद्दे