繁体   English   中英

给定修改的二叉搜索树,找到第k个最小元素

[英]Given a modified binary search tree, find k'th smallest element

假设在给定的二叉树中, 如果每个节点包含多个子元素 ,那么在树中找到第k个最小元素的最佳方法是什么?

请注意,这不是常规的BST。 每个节点都包含多个子元素。

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))

InOrder遍历方式遍历BST并将元素存储到数组。 您的数组是一个排序数组。

这就是我得到的:

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)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM