在几乎完整的bst的最低点位中找到最右边的叶子

时间:2018-06-20 19:38:42

标签: algorithm tree binary-search-tree complete

我有一个问题,似乎无法解决。 我需要在树的最低层(几乎完整的bst)中找到最右边的叶子,而树的大小是未知的。 >在O(log(n)^ 2)中。

我想的方向是:

算法:

while(当前节点有儿子)

  
      
  1. 计算右子树的高度,将其保存到rightH中。
  2.   
  3. 计算左子树的高度,将其保存到leftH。
  4.   
  5. 如果(rightH> = leftH)   与正确的儿子递归通话。   其他   与左儿子递归通话。   片刻结束
  6.   

返回当前节点。

最右边的叶子-树的最低层中最右边的叶子。

我不确定它是否会起作用,我希望您可以帮助我。 应该在O(log(n)^ 2)中运行

1 个答案:

答案 0 :(得分:0)

它可以工作,但是不会给您所需的时间复杂性。您的第1步和第2步合在一起在Ω(n)中运行(毕竟,它们必须访问所有元素)。

为了获得最佳的渐近时间复杂度,您需要依靠左填充的树。