Stel dat in een bepaalde binaire boom als elk knooppunt bevat aantal onderliggende elementen , wat is dan de optimale manier om k-kleinste element in de boom te vinden?
Let op: dit is geen gewone BST. Elk knooppunt is dat aantal subelement eronder.
Stel dat in een bepaalde binaire boom als elk knooppunt bevat aantal onderliggende elementen , wat is dan de optimale manier om k-kleinste element in de boom te vinden?
Let op: dit is geen gewone BST. Elk knooppunt is dat aantal subelement eronder.
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))
Dit is wat ik kreeg:
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)
}
Traverse BST ommet traverse wijze en opslaan elementen array. Array is een gesorteerde array.