我有这个问题需要解决。我不是在寻找答案,而是在寻找我应该去哪里的提示。我有一个算法,但不是 O(log n)。
给定二叉树 T 和一个不大于 T 中节点数的正整数 k,编写识别 T 中的元素 v 的伪代码,使得 T 中的 k-1 个元素恰好小于 v。您的代码应该花费时间与T的高度成正比。
我这里的基本想法是我会首先检查左树,检查左树的大小。如果左树的大小大于 k-1,则继续向左搜索。否则我会搜索正确的。如果整个左树不包含具有 k-1 个元素的节点,那么我搜索右子树。问题是我知道这不是 O(log n),因为最坏的情况是我必须搜索树中的每个节点。
有什么我想念的吗?任何提示或帮助都会很棒,但请不要只给我答案。