如何在RB树中找到最大值

时间:2019-07-19 16:50:29

标签: c data-structures binary-search-tree glibc libc

我正在研究一个项目,该项目需要我使用search.h中的glibc函数创建并经常搜索RB树。 我创建树或搜索树都没有问题;但是,我只是找不到在O(log n)时间中找到树的最大值的方法。 AFAIK正确的方法是一直走到树的右翼直到第一片叶子为止。我真的不知道如何实现它。

1 个答案:

答案 0 :(得分:3)

  

创建树或搜索树都没有问题;但是,我只是   无法找到一种方法来找到树的最大值   O(log n)时间。 AFAIK正确的方法是一直走下去   树的右翼直到第一片叶子;我真的不能   弄清楚如何实现。

恐怕你不走运。 (POSIX)search.h的树操作功能没有提供直接服务于find-maximum(或find-minimum)操作的接口,并且它们用来表示树的内部数据结构未公开,因此您无法手动实施通常的方法。您可以使用twalk()找到最大值,但这样做将需要遍历整个树,因此将缩放为O(n)。尽管深度优先行走将在O(log n)步中达到最小值,但即使找到最小值也将花费O(n),因为它不会在那里停止。