链表和二叉搜索树的区别

43

链表和二叉搜索树之间的主要区别是什么?BST是否只是维护链表的一种方式?我的讲师讲解了链表和BST,但没有进行比较或说明何时应该优先选择其中之一。这可能是一个愚蠢的问题,但我真的很困惑。如果有人能简单地澄清这一点,我将不胜感激。

13个回答

2

链表是一种线性数据结构,相邻节点之间互相连接,例如:A->B->C。你可以将其视为一条直线围栏。

BST是一种分层结构,就像一棵树,主干连接着分支,而这些分支又连接着其他分支,以此类推。这里的“二叉”意味着每个分支最多连接两个分支。

你可以使用链表表示仅与一个项相连的直线数据;而你可以使用BST将一个项连接到两个项。你可以使用BST来表示家谱等数据,但这将成为n-ary搜索树,因为每个人可能有超过两个子女。


1

二叉搜索树可以以任何方式实现,不一定需要使用链表。

链表只是一个包含节点和指向节点内其他节点的指针/引用的结构。给定列表的头节点,您可以浏览到链表中的任何其他节点。双向链表有两个指针/引用:正常引用下一个节点,但也引用前一个节点。如果双向链表中的最后一个节点将列表中的第一个节点作为下一个节点引用,并且第一个节点将最后一个节点作为其前一个节点引用,则称其为循环列表。

二叉搜索树是一种树形结构,它根据二分查找算法将输入分成两个大致相等的部分。因此,只需要非常少的查询就可以找到一个元素。例如,如果你有一个由1-10组成的树,并且你需要查找3,首先将检查顶部的元素,可能是5或6。3比这还小,所以只有树的前一半会被检查。如果下一个值是3,你就找到了它,否则会进行比较等操作,直到没有找到或者它的数据被返回。因此,这棵树在查找方面很快,但插入或删除操作不一定很快。这些只是非常粗略的描述。
维基百科的链表二叉搜索树

1

它们是完全不同的数据结构。

链表是一个元素序列,其中每个元素都链接到下一个元素,在双向链表的情况下,还链接到前一个元素。

二叉搜索树则完全不同。它有一个根节点,根节点最多有两个子节点,每个子节点可以有最多两个子节点等等。这是一种相当聪明的数据结构,但在此解释会有些乏味。请查看Wikipedia文章


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接