2012-08-08 19 views
10

मैं एक संग्रह में एक संगठन चार्ट स्टोर करना चाहता हूँ। मुझे लगता है कि एक पेड़ डेटा संरचना मेरी आवश्यकताओं के लिए सबसे उपयुक्त होगी, क्योंकि मुझे एक नोड में एकाधिक नोड्स जोड़ने की आवश्यकता है।वृक्ष संरचना को स्टोर करने के लिए कौन सा संग्रह?

LinkedList केवल एक नोड को अन्य नोड में जोड़ना प्रदान करता है, अगर मैं इसे सही ढंग से समझता हूं।

मैंने सी 5 treeset संग्रह देखा है, लेकिन ऐसा लगता है कि एक नोड में 2 से अधिक नोड्स जोड़ने के लिए Add() विधि नहीं है।

मैं भी Windows से Treeview वर्ग पर ध्यान दिया है पुस्तकालय फॉर्म्स, लेकिन मैं विंडोज रूपों अपने प्रोजेक्ट के लिए dll, के बाद से मैं एक सेवा परत आवेदन का निर्माण कर रहा हूँ जोड़ने के लिए नहीं करना चाहती। (या यह ठीक है?)

यदि मैं पहले से ही तृतीय पक्ष द्वारा प्रदान किया गया है, तो मैं अपना खुद का वृक्ष संग्रह वर्ग नहीं लिखना चाहता हूं?

कोई सुझाव कृपया?

धन्यवाद

+0

की संभावित डुप्लिकेट http://stackoverflow.com/questions/66893/tree-data कुछ भी की एक पेड़ पकड़ कर सकते हैं संरचना-में-सी-तेज? – ikh

+0

धन्यवाद ikh मैंने उस लिंक को देखा है, लेकिन मैं अपना खुद का संग्रह नहीं बनाना चाहता हूं। वहाँ कोई होना चाहिए जिसने एक डीएल बनाया है और इसे Nuget के माध्यम से वितरित किया है! – gunnerz

+1

प्री-बिल्ट पेड़-जैसे संग्रहों की समस्या यह है कि आम तौर पर स्वीकृत इंटरफेस पर कोई समझौता नहीं होता है। सूचियों, सेटों या शब्दकोशों के विपरीत, पेड़ों और ग्राफों में उन्हें लागू करने वाले लोगों के आधार पर काफी अलग इंटरफेस हो सकते हैं, और किस उद्देश्य के लिए उन्हें उपयोग करने की आवश्यकता है। सी # अपने आप को रोल करना आसान बनाता है, और यह कुछ है जो मैं निश्चित रूप से आपकी स्थिति में करने की सिफारिश करता हूं। – dasblinkenlight

उत्तर

24

ऐसा कुछ शुरुआती बिंदु हो सकता है। जेनरिक का उपयोग करके इस एक

class TreeNode<T> 
{ 
    List<TreeNode<T>> Children; 

    T Item {get;set;} 

    public TreeNode (T item) 
    { 
     Item = item; 
    } 

    public TreeNode<T> AddChild(T item) 
    { 
     TreeNode<T> nodeItem = new TreeNode<T>(item); 
     Children.Add(nodeItem); 
     return nodeItem; 
    } 
} 

एक नमूना है जो तार के एक पेड़ रखती

string root = "root"; 
TreeNode<string> myTreeRoot = new TreeNode<string>(root); 
var first = myTreeRoot.AddChild("first child"); 
var second = myTreeRoot.AddChild("second child"); 
var grandChild = first.AddChild("first child's child"); 
संबंधित मुद्दे