java - 二叉搜索树的搜索和比较内容的大O

标签 java big-o binary-search-tree

我有一个程序,它采用两个二叉搜索树,tree1和tree2,其中填充了字符串。该程序对tree1 进行中序遍历,并且对于tree1 中的每个字符串,它在tree2 中搜索该字符串。我认为从tree2中的tree1中搜索每个值的复杂度为O(logn),遍历tree1中的每个值的复杂度为O(n)。这是否意味着整个过程是O(nlogn),n用于遍历tree1获取每个值,logn在tree2中找到该值?我不太擅长理解大 O 表示法,因此感谢任何帮助或解释。谢谢!

最佳答案

思考这个问题的另一种方式是:

你有一个排序数组 t1 :

var t1 = ['1','2','3','4']

你有一个既排序又尽可能平坦的树,每个节点最多有 2 个子节点(二叉搜索树)

var t2 = '1' -> '2' -> '4'
             -> '3' 

现在,对于 t1 中的每个元素,您将在 t2 中搜索该元素。正如您所想 - 这意味着执行 n 次 logN 操作,这会给您 nlogn 总计算

关于java - 二叉搜索树的搜索和比较内容的大O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33988612/

相关文章:

algorithm - 该算法的复杂度函数

algorithm - T(n) = T(n/2) + T(n/4) 使用迭代法求解这个递归

c++ - 删除节点方法实际上并没有删除二叉搜索树中的节点。 C++

java - 从java字符串数组中获取不同的元素

java - 需要根据黑名单解析日志文件

算法复杂度时间

java - 如何找到存储在由每个值的深度加权的整数二叉树中的值的总和?

java - 相交 2 个二叉树 - 抛出堆栈溢出错误

java - ClientBundles 和资源 : what are they and why use them? 它们解决什么问题?

Java API 从 CSV 文件创建对象