binary-tree - 为什么 O(N Log N) 构建二叉搜索树?

标签 binary-tree

准备考试。这不是作业问题。

我认为最坏的情况是 O(N^2) 来构建 BST。 (每次插入 req N-1 比较,您将所有比较相加 0 + 1 + ... + N-1 ~ N^2)。这就是偏斜 BST 的情况。

(平衡)BST 的插入是 O(log N),那么为什么最好的情况是 O(N logN) 来构造树?

我的猜测最好的猜测 - 因为单次插入是 log N,而不是总和所有插入以某种方式给我们 N log。

谢谢 !

最佳答案

正如您所写:) 单次插入是 O(log N)。因为 N 元素的加权树高度是 log N,所以您需要最多对 log N 次比较才能插入单个元素。您需要进行 N 次这些插入。所以 N*logN。

关于binary-tree - 为什么 O(N Log N) 构建二叉搜索树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5142653/

相关文章:

c++ - 通用二叉树节点析构函数问题

algorithm - 尝试检查树是否是最大堆

c - 返回 C 中二叉树中节点的父节点

algorithm - 给定后序遍历如何构建BST

java - 在Java中一次遍历二叉树时获取树的最小和最大高度?

c - 在二叉树中插入节点时程序崩溃

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

c - 二叉树代码无法正常工作

python - 按顺序打印二叉树,python

c++ - 递归函数c++的段错误