संतुलित द्विआधारी खोज वृक्ष sortedset का उपयोग कर

वोट
0

कृपया मदद मैं आकार 1024 के एक यादृच्छिक द्विआधारी खोज वृक्ष उत्पन्न करने के लिए कोशिश कर रहा है और तत्वों यादृच्छिक sortedset होने की जरूरत है ... मैं मैन्युअल तत्व जोड़कर मैन्युअल रूप से एक द्विआधारी खोज वृक्ष बनाने के लिए एक कोड लिखने में सक्षम हूँ लेकिन मैं यो unablele मीटर एक कोड है कि आकार 1024 के एक यादृच्छिक संतुलित द्विआधारी पेड़ उत्पन्न होगा तो उस पेड़ में एक महत्वपूर्ण खोजने की कोशिश का उपयोग लिखने ... कृपया कृपया और यू आगे धन्यवाद ....

संपादित टिप्पणियों से कोड जोड़ा

फिर यह होमवर्क है ... और इस मैं अब तक मिल गया कोड है:

using System; 
namespace bst { 
    public class Node { 
        public int value; 
        public Node Right = null; 
        public Node Left = null; 

        public Node(int value) 
        { 
            this.value = value; 
        } 
    } 

    public class BST { 
        public Node Root = null; 
        public BST() { }

        public void Add(int new_value) 
        { 
            if(Search(new_value)) 
            {
                Console.WriteLine(value ( + new_value + ) already);
            }
            else
            {
                AddNode(this.Root,new_value);
            }
        }
    }
}
21/01/2011 को 00:53
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
2

प्रत्यावर्तन का प्रयोग करें। प्रत्येक शाखा एक नई शाखा उत्पन्न करता है, अवर्गीकृत सेट, मंझला में मध्यम आइटम का चयन करें। यह पेड़ में वर्तमान आइटम में रख दें। एक और सरणी के लिए सभी आइटम मंझला से कम कॉपी एक ही विधि के कॉल करने के लिए है कि नई सरणी भेजें। सभी आइटम एक और सरणी के लिए औसत से अधिक से अधिक कॉपी, एक ही विधि के कॉल करने के लिए है कि नई सरणी भेज देते हैं। \

बैलेंस्ड पेड़, मदों की एक विषम संख्या है करने के लिए जब तक मुख्य माता पिता नोड में। तुम अगर वहाँ दो मानों कि माध्य हैं डुप्लिकेट कम शाखा या ऊपरी शाखा पर संबंधित है या नहीं कर रहे हैं, यह निर्णय लेना होगा भरा नहीं है। मैं अपने उदाहरण में ऊपरी शाखा पर डुप्लिकेट डाल दिया।

मंझला संख्या जहां संख्या की एक समान राशि से कम और संख्या से अधिक है किया जाएगा। 1,2,3,3,4,18,29,105,123 इस मामले में, मंझला 4, भले ही इसका मतलब (या औसत) बहुत अधिक है।

मैं कोड है कि मंझला निर्धारित करता है शामिल नहीं किया।

BuildTreeItem(TreeItem Item, Array Set)  
{
  Array Smalls;
  Array Larges;
  Median = DetermineMedian(Set);
  Item.Value = Median;
  if(Set.Count() == 1)
    return;  
  for (int i = 0; int i < Set.Count(); i++)
  {
    if(Set[i] < Median)
    {
      Smalls.new(Set[i]);
    }
    else
    {
      Larges.new(Set[i]);
    }
  }
  Item.Lower = new TreeItem;
  Item.Upper = new TreeItem;
  BuildTreeItem(TreeItem.Lower, Smalls);
  BuildTreeItem(TreeItem.Upper, Larges);
}
21/01/2011 को 01:13
का स्रोत उपयोगकर्ता

वोट
0

जब तक यह होमवर्क है सबसे आसान समाधान पहले डेटा को सॉर्ट और फिर रूट के रूप में मध्यम आइटम का उपयोग करने और प्रत्येक आधा नीचे उतरते द्वारा एक पेड़ के निर्माण के लिए किया जाएगा। Xaade द्वारा प्रस्तावित विधि समान है , लेकिन बहुत धीमी DetermineMedian जटिलता के कारण

अन्य विकल्प वास्तव में एल्गोरिदम कि संतुलित पेड़ (जैसे निर्माण को देखने के लिए http://en.wikipedia.org/wiki/Red-black_tree ) अगर यह अपनी आवश्यकताओं फिट बैठता है देखने के लिए।

संपादित करें: Xaade एल्गोरिथ्म की गति के बारे में गलत बयान को हटाने - यह वास्तव में जितनी जल्दी जल्दी प्रकार है (एन लॉग इन करें n - लॉग n प्रत्यावर्तन के स्तर के साथ प्रत्यावर्तन के हर स्तर पर प्रत्येक तत्व की जाँच), यकीन नहीं क्यों मैं इसे धीमी का अनुमान है।

21/01/2011 को 02:42
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more