zoukankan      html  css  js  c++  java
  • 为什么要使用树以及使用什么树

     
    (1)为什么要使用树:
      因为如果使用线性表进行操作,那么搜索的时间复杂度是O(n)规模的。而如果使用树这个数据集的话,能够把时间复杂度的规模降低到O(logn)规模。
     
    (2)为什么使用二叉查找树:
      构建二叉查找树,能够限制节点的左子树中的值都比当前节点的小,右子树的都比当前节点的大。这样子更有利于进行搜索,有利于进行二分查找。
     
    (3)为什么使用平衡二叉树:
      如果是非平衡二叉树,那么在构建树的过程中可能会出现一种情况,那就是树变成单支二叉树,也就是变成了链表的结构,此时搜索的时间复杂度又会变成O(n)规模。因此提出了使用平衡二叉树。控制左右子树的高度差不能超过1.此时就能够保证不会出现单支二叉树的情况。一般是构建AVL树。而且AVL树具有自平衡特性,因此保证其在失去平衡之后,可以自动调整回来,能够严格保证是一棵平衡二叉树。
     
    (4)为什么使用红黑树:
      AVL树确实挺好的。但是AVL树追求严格的平衡,因此在添加或者删除节点时,一定程度上会增加操作次数。而在红黑树中,只是追求相对平衡,因此在一定程序上能够提高效率。这就红黑树比较好的一点。适用于内存中。
     
    (5)为什么使用B树:
      B树的一个特点就是它是一种多分支树。这种树的中的每个节点可以存储多个内节点,通过这样子,可以大大降低树的高度。因此也可以大大提高树的搜索速度。因为对于树来说,其时间复杂度是与树的高度有关的。而且是成正比。正是因为它的这种特性,所以它的搜索效率挺高的。但是一般应用于外存中,好像是因为它的空间复杂度比较大,需要用到比较多的存储空间,所以比较适用于外存。
  • 相关阅读:
    Web开发需要掌握的
    使用this关键字,构造函数的相互调用
    FCKEditor.Net在Asp.Net MVC中的配置
    技术收集
    System.Collections命名空间
    C#中的托管堆,托管
    C#中的数据类型
    sql server部分主要代码
    Visual C#常用函数和方法集汇总
    C#委托和事件
  • 原文地址:https://www.cnblogs.com/axing-articles/p/11482525.html
Copyright © 2011-2022 走看看