当前位置:  开发笔记 > 运维 > 正文

LinkedList和二叉搜索树之间的区别

如何解决《LinkedList和二叉搜索树之间的区别》经验,为你挑选了6个好方法。

链接列表和BinarySearchTree之间的主要区别是什么?BST只是维护LinkedList的一种方式吗?我的导师谈到了LinkedList,然后讨论了BST,但没有比较它们或者没有说何时更喜欢一个而不是另一个.这可能是一个愚蠢的问题,但我真的很困惑.如果有人能够以简单的方式澄清这一点,我将不胜感激.



1> Toon Krijthe..:

链接列表:

Item(1) -> Item(2) -> Item(3) -> Item(4) -> Item(5) -> Item(6) -> Item(7)

二叉树:

                 Node(1)
                /
            Node(2)
           /    \
          /      Node(3)
  RootNode(4)
          \      Node(5)
           \    /
            Node(6)
                \
                 Node(7)

在链接列表中,项目通过单个下一个指针链接在一起.在二叉树中,每个节点可以有0,1或2个子节点,其中(在二叉搜索树的情况下)左节点的密钥小于节点的密钥,右节点的密钥大于节点.只要树是平衡的,每个项目的搜索路径比链接列表中的搜索路径短得多.

搜索路径中:

------ ------ ------
key    List   Tree
------ ------ ------
1      1      3
2      2      2
3      3      3
4      4      1
5      5      3
6      6      2
7      7      3
------ ------ ------
avg    4      2.43
------ ------ ------

通过更大的结构,平均搜索路径变得更小:

------ ------ ------
items  List   Tree
------ ------ ------
     1      1   1
     3      2   1.67
     7      4   2.43
    15      8   3.29
    31     16   4.16
    63     32   5.09
------ ------ ------



2> CMS..:

二叉搜索树是一个二叉树,其中,每个内部节点X存储元件,例如,存储在的左子树的元素X是小于或等于X和存储在右子树的元素X是大于或等于x.

替代文字

现在,链接列表由一系列节点组成,每个节点包含任意值以及指向下一个和/或前一个节点的一个或两个引用.

链接列表



3> Vincent Ramd..:

在计算机科学中,二叉搜索树(BST)是二叉树数据结构,具有以下属性:

每个节点(树中的项)具有不同的值;

左右子树也必须是二叉搜索树;

节点的左子树只包含小于节点值的值;

节点的右子树仅包含大于或等于节点值的值.

在计算机科学中,链表是基本数据结构之一,可用于实现其他数据结构.

因此二进制搜索树是一个抽象概念,可以用链表或数组实现.而链表是基本数据结构.



4> Zugwalt..:

我会说MAIN的区别在于二叉搜索树是排序的.当您插入二进制搜索树时,这些元素最终存储在内存中是其值的函数.使用链表,无论元素的价值如何,都会盲目地将元素添加到列表中.

您可以立即进行一些权衡:链接列表保留插入顺序,插入更便宜二进制搜索树通常更快搜索



5> FlySwat..:

链表是彼此链接的连续数量的"节点",即:

public class LinkedListNode
{
     Object Data;
     LinkedListNode NextNode;
}

二进制搜索树使用类似的节点结构,但它不链接到下一个节点,而是链接到两个子节点:

public class BSTNode
{
    Object Data
    BSTNode LeftNode;
    BSTNode RightNode;
} 

通过在向BST添加新节点时遵循特定规则,您可以创建一个非常快速遍历的数据结构.这里的其他答案详细说明了这些规则,我只是想在代码级别显示节点类之间的区别.

重要的是要注意,如果您将已排序的数据插入到BST中,您最终会得到一个链表,并且您将失去使用树的优势.

因此,linkedList是O(N)遍历数据结构,而BST在最坏的情况下是O(N)遍历数据结构,在最好的情况下是O(log N).



6> Konrad Rudol..:

链接列表和BST实际上并没有太多共同之处,只是它们都是充当容器的数据结构.链接列表基本上允许您在列表中的任何位置有效地插入和删除元素,同时保持列表的顺序.此列表使用从一个元素到下一个元素(通常是前一个元素)的指针实现.

一个二叉搜索树,另一方面是更高的抽象的数据结构(即它没有规定如何这是内部实现的),可实现有效的搜索(即,为了找到一个特定的元素,你不必在所有看要素.

请注意,链接列表可以被视为退化二叉树,即所有节点只有一个子节点的树.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有