एक संशोधित द्विआधारी खोज वृक्ष को देखते हुए, k'th सबसे छोटा तत्व को खोजने

वोट
4

किसी दिए गए द्विआधारी पेड़ में मान लीजिए यदि प्रत्येक नोड चाइल्ड तत्वों की संख्या में शामिल है , तो क्या पेड़ में k'th सबसे छोटा तत्व को खोजने के लिए इष्टतम तरीका है?

कृपया ध्यान दें यह नियमित BST नहीं है। प्रत्येक नोड इसके तहत चाइल्ड तत्व के संख्या वाले है।

06/09/2011 को 13:56
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
4

find_element(root, k)

    if(root.left.nchildren + 1 == k - 1) 
        return root;

    if(root.left.nchildren + 1 >= k)
        return find_element(root.left, k)             

    else 
        return find_element(root.right, k - (root.left.children + 1))
06/09/2011 को 14:04
का स्रोत उपयोगकर्ता

वोट
0

मेरे पास बस यही है:

find (root, k)
{
leftChildCount = root->left->n
rightChildCount = root->right->n

if (leftChildCount+1 == k)
  Print root node
else if (k< leftChildCount)
  Find(root->left,k)
else
  Find(root->right,k-leftChildCount)
}
06/09/2011 को 14:05
का स्रोत उपयोगकर्ता

वोट
0

में BST Traverse inorder सरणी पार ढंग और दुकान तत्वों। आपका सरणी एक क्रमबद्ध सरणी है।

22/05/2013 को 20:15
का स्रोत उपयोगकर्ता

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