假设在给定的二叉树中如果每个节点包含子元素数,那么在树中找到第k个最小元素的最优方法是什么?给定一个修改的二叉搜索树,找到第k个最小元素
请注意,这不是普通的BST。每个节点都包含它下面的子元素的编号。
假设在给定的二叉树中如果每个节点包含子元素数,那么在树中找到第k个最小元素的最优方法是什么?给定一个修改的二叉搜索树,找到第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))
这是我得到:
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)
}
遍历BST在InOrder遍历方式和存储元件阵列。你的数组是一个有序数组。
作业,偶然? – Skizz
绝对不是作业。 @Skizz,我想告诉你我的办公室徽章一次。 :) –