为什么要使用树以及使用什么树

 
(1)为什么要使用树:
  因为如果使用线性表进行操作,那么搜索的时间复杂度是O(n)规模的。而如果使用树这个数据集的话,能够把时间复杂度的规模降低到O(logn)规模。
 
(2)为什么使用二叉查找树:
  构建二叉查找树,能够限制节点的左子树中的值都比当前节点的小,右子树的都比当前节点的大。这样子更有利于进行搜索,有利于进行二分查找。
 
(3)为什么使用平衡二叉树:
  如果是非平衡二叉树,那么在构建树的过程中可能会出现一种情况,那就是树变成单支二叉树,也就是变成了链表的结构,此时搜索的时间复杂度又会变成O(n)规模。因此提出了使用平衡二叉树。控制左右子树的高度差不能超过1.此时就能够保证不会出现单支二叉树的情况。一般是构建AVL树。而且AVL树具有自平衡特性,因此保证其在失去平衡之后,可以自动调整回来,能够严格保证是一棵平衡二叉树。
 
(4)为什么使用红黑树:
  AVL树确实挺好的。但是AVL树追求严格的平衡,因此在添加或者删除节点时,一定程度上会增加操作次数。而在红黑树中,只是追求相对平衡,因此在一定程序上能够提高效率。这就红黑树比较好的一点。适用于内存中。
 
(5)为什么使用B树:
  B树的一个特点就是它是一种多分支树。这种树的中的每个节点可以存储多个内节点,通过这样子,可以大大降低树的高度。因此也可以大大提高树的搜索速度。因为对于树来说,其时间复杂度是与树的高度有关的。而且是成正比。正是因为它的这种特性,所以它的搜索效率挺高的。但是一般应用于外存中,好像是因为它的空间复杂度比较大,需要用到比较多的存储空间,所以比较适用于外存。
posted @ 2019-09-07 19:34  数据是宝  阅读(806)  评论(0编辑  收藏  举报