链表/二叉树作为存储和搜索数据的结构的优缺点



我需要写一篇关于链表和二叉树作为存储和搜索数据的结构的优点和缺点的评估。但是我有点迷茫,不知道有什么优点和缺点?

任何帮助将不胜感激,谢谢!

让我们考虑链表的工作原理与二叉树
的工作原理 对于双向链表,我们有这样的元素

Head < - > 5 < - > 10 < - > 4 < - > tail

如果我们想添加一个元素,我们可以轻松地将其添加到列表的头部或尾部,方法是将新元素指向端点和端点指向的值,然后更新这两个元素以指向新元素(确保正确分配上一个和下一个)我在这里掩盖了它,但是如果您搜索插入,则有很多很好的资源可用链表。此操作具有 O(1) 时间复杂度。对插入(平衡的)二叉树进行一些研究,这将需要更长的时间

现在搜索呢?在上面的链表中,如果我想找到一个元素,我必须从一侧遍历整个列表,直到达到我想要的值。这会导致 O(n) 时间复杂度,但是如果我们有一个平衡的二叉树,我们可以检查我们正在寻找的是高于还是低于中间的 ~ 值。如果它更高,我们可以消除数字的下半部分。然后我们可以对剩余的数字执行相同的步骤。这在每一步中将剩余数字的数量减少了~一半,并大大减少了时间。

有很多方法可以评估这一点,它们依赖于不同的实现。我给你的建议是,选择你想要关注的每个实现的哪个实现来比较操作的时间复杂度,然后考虑替代实现以及它们对操作的时间复杂度的作用。

对于二进制,请考虑平衡和不平衡。
对于链表,查看双链接,单链接,有和没有指向尾部的指针(本质上是堆栈与队列)

如果您对特定实现及其比较方式有疑问,请告诉我们,我们将尽最大努力解决这个问题。

最新更新