搜索树中列表的时间复杂度

时间:2017-03-18 18:32:11

标签: algorithm time-complexity

我正在研究算法和数据结构类的项目。

如果我有一个二叉搜索树,每个节点包含:

  typedef struct Node {
  char* name;
  List* list;
  struct Node *right;
  struct Node *left;
} Node;

我希望在该列表中搜索确定的值,这次搜索的时间复杂度是多少?我知道列表中搜索的时间复杂度是O(n),但我还想考虑树中搜索的时间复杂度。列表未排序,BST按字母顺序排序。

2 个答案:

答案 0 :(得分:2)

非平衡二进制搜索树可以退化为链表,因此最坏情况的复杂性仍为O(n)

答案 1 :(得分:0)

答案归结为"树是否排序" (并按有用的顺序..)

如果您需要搜索所有节点以及每个节点中的所有列表,(平均情况)时间复杂度将为O(n*m),其中n是列表的平均长度,{{ 1}}是树中节点的数量。

如果只能检查某个路径(类似于在二叉搜索树中只搜索一个路径的方式),则(平均情况)复杂度为m