पढ़ता है मैं डिस्क फ़ाइल में एक Btree (सुनिश्चित नहीं है कि एक बाइनरी एक) को सहेजना चाहता हूं। और फिर इसे स्मृति में पढ़ें। कुछ लेवल-ऑर्डर ट्रैवर्सल बाइनरी बीटी के लिए एक अच्छा तरीका हो सकता है। लेकिन यदि यह एक बाइनरी नहीं है। मैं पत्ती के पत्थर से बीटी को मेमोरी में रूटनोड में बना देता हूं। मेरा मानना है कि मुझे डिस्क फ़ाइल में कुछ संरचनाओं को परिभाषित करना है और पेड़ नोड्स को आउटपुट करना है। फ़ाइल में नोड की पहचान करने के लिए कुछ अतिरिक्त टैग का उपयोग कर? ट्रैवर्सल कैसे करें यहां मुख्य समस्या हो सकती है। मैंने नोड्स और पॉइंटर्स को सहेजने के लिए एक अच्छा तरीका नहीं बताया है। और फिर इसे पढ़ें। स्मृति में पेड़ rconstruct। कोई अच्छा विचार? बहुत बहुत धन्यवाद।एक डिस्क फ़ाइल में Btrees को सहेज रहा है और इसे
उत्तर
तुम सच में कुछ इसी तरह करना चाहते हैं, तो आप बस प्रत्येक नोड एक आईडी पर निर्दिष्ट करेंगे और उस प्रारूप में नोड्स बचा सकते हैं:
[नोड आईडी मान छोड़ दिया नोड आईडी सही नोड-id]
और फिर एक चौड़ाई वाली पहली खोज के साथ पेड़ पर जाएं।
आप पेड़ को फिर से संगठित, एक नक्शा ID-> नोड बनाने और उसके बाद करना चाहते हैं फ़ाइल को पढ़ने पिछड़े: तो, जब आप एक रिकॉर्ड पढ़ा है,, नोड बनाने के मानचित्र में पंजीकृत और बाईं आवंटित और मानचित्र से नोड्स लाने के लिए सही नोड।
एक विकल्प भी नोड के स्तर को बचाएगा, और पेड़ के पुनर्निर्माण के लिए बीएफएस का उपयोग करेगा। नोड का मूल्य तय करेगा कि बाएं या दाएं बच्चे हैं या नहीं। –
प्रत्येक नोड के लिए कुछ डेटा संरचना परिभाषित करती है जो आपके लिए नोड के समान जानकारी रखती है और उस संरचना को अतिरिक्त फ़ील्ड में जोड़ती है जो आपके लिए अगले बेटे के लिए फ़ाइल में ऑफ़सेट चिह्नित करेगी। और उस संरचना के शीर्ष क्षेत्र को वास्तविक आकार बनाएं, क्योंकि आप नहीं जानते कि अब आप किस प्रकार का पेड़ देख रहे हैं। अब फाइल पर कूदकर आप अपने पेड़ का पुनर्निर्माण करने में सक्षम होंगे। मुझे यकीन है कि मेरा समाधान अंतिम नहीं है, लेकिन मुझे उम्मीद है कि यह आपके लिए अच्छा सितारा बिंदु हो सकता है।
आप Protocol Buffers देख सकते हैं। वे कॉम्पैक्ट, बाइनरी, एक्स्टेंसिबल, पढ़ने और लिखने में आसान हैं, और सी ++, जावा और पायथन (साथ ही साथ अन्य भाषाओं में तीसरे पक्ष के कार्यान्वयन) में उपलब्ध हैं।
आप बीटी नोड के लिए प्रोटोकॉल बफर संदेश को परिभाषित कर सकते हैं, जिसमें बच्चे नोड्स के लिए फ़ाइल ऑफसेट हैं, और बस इसे स्पष्ट तरीके से डिस्क पर क्रमबद्ध करें।
बी-पेड़ के लिए सामान्य तकनीक यह सुनिश्चित करना है कि नोड का आकार डिस्क के ब्लॉक आकार के बराबर है, और डिस्क फ़ाइल को mmap। आप यह निर्दिष्ट नहीं करते कि आप किस प्रोग्रामिंग भाषा में काम कर रहे हैं, इसलिए यह सी में एक कलाकार के रूप में सरल हो सकता है, या कुछ जटिल हो सकता है जैसे कि java.nio.IntBuffer को लपेटने के लिए फ्लाईवेट ऑब्जेक्ट्स बनाना। किसी भी तरह से, बी-पेड़ का अधिक लाभ यह है कि आपको इसे एक साथ लोड करने की ज़रूरत नहीं है, लेकिन इसके आसपास काफी कुशलता से कूद सकते हैं।
- 1. CGImageRef को एक पीएनजी फ़ाइल में सहेज रहा है?
- 2. मैं एम्बेडेड संसाधन से फ़ाइल कैसे निकाल सकता हूं और इसे डिस्क पर सहेज सकता हूं?
- 3. CSVWriter फ़ाइल को डेटा सहेज नहीं रहा - क्यों?
- 4. एक एनएसवी व्यू को एक पीएनजी फ़ाइल में सहेज रहा है?
- 5. पाइथन में KDTree ऑब्जेक्ट सहेज रहा है?
- 6. एंड्रॉइड व्यूपार्जर डेटा और विचारों को सहेज रहा है
- 7. एंड्रॉइड में मैं इसे चलाने के दौरान एक आरटीएसपी धारा को फ़ाइल में कैसे सहेज सकता हूं?
- 8. गिट: एक फ़ाइल को संस्करणित करने से हटा रहा है, लेकिन इसे हटा नहीं रहा है
- 9. आईआर को फ़ाइल में कैसे सहेजना है और इसे निष्पादन योग्य फ़ाइल में कैसे बनाया जाए?
- 10. PHP एक कुकी फ़ाइल पढ़ रहा है
- 11. एक एक्सएमएल फ़ाइल को पाइथन के साथ डिस्क में कैसे सहेजना है?
- 12. आईई 8 कुकी मूल्यों को सहेज नहीं रहा है?
- 13. डिस्क ड्राइव में डिस्क है
- 14. EntityManager (0) डेटाबेस को कुछ भी सहेज नहीं रहा है
- 15. लिनक्स डिस्क फ़ाइल एआईओ
- 16. बिना खुले फ़ाइल (वास्तव में) इसे लॉक कर रहा है?
- 17. MySQL डेटाबेस में क्रेडिट कार्ड की जानकारी सहेज रहा है?
- 18. tar.gz से एक फ़ाइल निकालें, डिस्क
- 19. डिस्क डिफ्रैग्मेंटेशन और डिस्क चेक
- 20. GORM मेरी ऑब्जेक्ट को क्यों नहीं सहेज रहा है?
- 21. एक सैंडबॉक्स मैक ऐप फ़ाइलों को सहेज सकता है?
- 22. रेल में बुध संपादक परिवर्तनों को सहेज नहीं रहा
- 23. क्रोम एक्सटेंशन: डिस्क पर फ़ाइल को कैसे सहेजें
- 24. Emacs एकाधिक स्थानों पर फ़ाइल को कैसे सहेज सकता है?
- 25. रेल पर रूबी - चेकबॉक्स डेटाबेस में सहेज नहीं रहा है?
- 26. डिस्क क्या हो रहा है के नीचे
- 27. कैमरा इरादा फोटो सहेज नहीं रहा
- 28. जावास्क्रिप्ट स्थानीय फ़ाइल में कैसे सहेज सकता है?
- 29. वाईआई, $ _FILES से एक छवि को सहेज रहा है, लेकिन मॉडल का उपयोग किए बिना
- 30. एक आरपीएम फ़ाइल को अनपॅक करना और इसे रीपैक करना
आप केवल मूल्यों की सूची को सहेज नहीं सकते हैं और इसे रन-टाइम पर पुनर्निर्माण नहीं कर सकते हैं? – akappa
आप "बाइनरी पेड़" और "ब्रीटी" को भ्रमित कर रहे हैं। शायद आपको पहले इसे साफ़ करना चाहिए। http://en.wikipedia.org/wiki/B-tree http://en.wikipedia.org/wiki/Binary_search_tree – bendin