ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

10.树结构

2022-04-12 09:32:16  阅读:193  来源: 互联网

标签:10 哈希 树结构 效率 优点 数组 节点


  树结构

    真实的数:

      相信每个人对现实生活中的树都会非常熟悉

    我们来看一下树有什么特点?

      树通常有一个根,连接着根的是树干

      树干到上面之后会进行分叉成树枝,数值还会分叉成更小的树枝

      在树枝的最后是叶子

    树的抽象:

      专家们对树的结构进行了抽象,发现树可以模拟生活中的很多场景

  模拟树结构

    公司组织架构:

      

 

  树结构的抽象

    我们再将里面的数据移除,仅仅抽象出来结构,那么就是我们要学习的树结构

      

  树的优点

    我们之前已经学习了多种数据结构来保存数据,为什么要使用树结构来保存数据呢?

    树结构和数组/链表/哈希表的对比有什么优点?

     数组:

     优点:

      数组的主要优点是根据下标值访问效率会很高

      但是如果我们希望根据元素来查找对应的位置呢?

      比较好的方式是先对数组进行排序,而进行二分排序

    缺点:

      需要先对数组进行排序,生成有序数组,才能提高查找效率

      另外数组在插入和删除数据时,需要有大量的位移操作(插入

      到首位或者中间位置的时候),效率很低

    链表:

    优点:

      链表的插入和删除操作效率都很高

    缺点:

      查找效率很低,需要从头开始依次访问链表中的每个数据项,直到找到

      而且即使插入和删除操作效率很高,但是如果要插入和删除中间位置的

      数据,还是需要重头先找到对应的数据

    哈希表:

    优点:

      我们学过哈希表后,已经发现了哈希表的插入/查询

      /删除效率都是非常高的

      但是哈希表也有很多缺点

    缺点:

      时间利用率不高,底层使用的是数组,并且某些单元是没有被利用的

      哈希表中的元素是无序的,不能按照固定的顺序来遍历哈希表中的元素

      不能快速的找出哈希表中的最大值或者最小值这些特殊的值

    树结构:

      我们不能说树结构比其他的结构都要好,因为每种数据结构都有自己特定的应用场景

      但是树确实也综合了上面数据结构的优点(当然优点不足与盖过其他数据结构,

      比如效率一般情况下没有哈希表高)

      并且也弥补了上面数据结构的缺点

    而且为了模拟某些场景,我们使用树结构会更加方便

      因为数结构的非线性的,可以表示一对多的关系

      比如文件的目录结构

  树的术语

    在描述树的各个部分的时候有很多术语

      为了让介绍的内容更容易李杰,需要知道一些树的术语

      不过大部分术语都与真实世界的树相关,或者和家庭关系相关(如父节点和子节点),所以它们比较容易理解

    树(Tree):n(n>=0)个节点构成的有限集合

      当n=0时,称为空树

    对于任一棵非空树(n>0)它具备以下性质:

      树中有一个成为 "根(Root)" 的特殊节点,用r表示

      其余节点可分为m(m>0)个互不相交的有限集T1, T2, ... , Tm, 

      其中每个集合本身又是一棵树,称为原来树的 "子树(SubTree)"

      

    树的术语:

      1.节点的 度(Degree):节点的子树个数

      2.树的度:树的所有节点中最大的度数

      3.叶节点(Leaf):度为0的节点(也称为叶子节点)

      4.父节点(Parent):有子树的节点是其子树的根节点的父节点

      5.子节点(Child):若A节点是B节点的父节点,则称B节点是A节点的子节点;子节点也称孩子节点

      6.兄弟节点(Sibling):具有同一父节点的各节点彼此是兄弟节点

      7.路径和路径长度:从节点n1到nk的路径为一个节点序列n1,n2,...,nk,ni是ni + 1的父节点。路径所包含边

      的个数为路径的长度

      8.节点的层数(Level):规定根节点在1层,其它任一节点的层数是其父节点的层数加1

      9.树的深度(Depth):树中所有节点中的最大层次是这棵树的深度

   普通的表示方式

    最普通的表示方式

    

 

    儿子-兄弟表示法

    

 

    儿子-兄弟表示法旋转

    

 

    你发现上面规律了吗?

      其实所有的树本质上都可以使用二叉树模拟出来

      所以在学习树的过程中,二叉树非常重要

 

 

 

 

    

标签:10,哈希,树结构,效率,优点,数组,节点
来源: https://www.cnblogs.com/g116/p/16131089.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有