zoukankan      html  css  js  c++  java
  • 为什么使用二叉树?

    一、为什么使用二叉树?

      因为二叉树结合了有序数组,链表这两者的优点。在树中查找数据的速度和有序数组中查找一样快。并且插入数据和删除数据的速度和链表一样。

    二、在有序数组中插入数据项太慢

      有序数组:数组中的所有数据项都有序的排列。用二分查找可以在有序数组中快速查找特定的值。

    过程是先查看数组的中间的数据,如果中间数据比想要的大,缩写范围,在前半段找。反复过程查找的复杂度就是O(logN)。

      在有序数组中插入一个新数据,必须要找到新数据插入的位置,然后把所有比新数据大的向后移动一位。这样每次移动都很费时,平均要移动数组中一半的数据(N/2次移动),同理删除也是要多次移动。时间复杂度为O(N)

    三、在链表中查找太慢

      链表的插入和删除操作都很快,只需要改变一些指针的指向就可以。这些操作的时间复杂度只有O(1).但是在链表中查找数据可不容易。查找必须从头开始,依次访问链表中的每个元素。直到找到所要的数据。因此平均访问N/2个数据项。

      不难想到可以通过有序的链表来加快查找速度,链表中的数据项有序的,但这样做没有用的。即使是有序的链表还是必须从头开始依次访问数据项,因为链表中不能直接访问某个数据项,必须通过数据项间的链式引用才行当然有序链表访问结点还是比无序链表快多了,但是查找任意的数据项它无能为力。

    四、用树解决问题

      二叉树:树中每个结点最多只能有两个子节点。这样的树为二叉树。

      二叉搜索树:一个节点的左子节点的关键字值小于父节点,右子值大于等于父节点。

  • 相关阅读:
    网络安全部门的漏洞扫描让你头痛不已么——PHP环境选它就可以了
    2009年系统架构设计师考试试题知识点整理(一)
    解决EasyUI DataGrid删除行失败的方法
    贝叶斯文本分类原理
    为什么要对博客进行机器自动分类
    《机器学习实战》 in python3.x
    网站分析数据收集方式详解
    ThinkPHP5项目目录规划实践
    NumPy基础:用于数组的文件输入输出
    NumPy基础:通用函数-快速的元素级数组函数
  • 原文地址:https://www.cnblogs.com/drq1/p/8418529.html
Copyright © 2011-2022 走看看