树结构
存储方式的分析对比
1、数组存储方式的分析
(1)优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度
(2)缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低;数组扩容,需要创建一个新数组,要把原数组数据拷贝到新数组,再插入新元素
2、链式存储方式的分析
(1)优点:在一定程度上对数组存储方式有优化,比如:插入一个数值节点, 只需要将插入节点, 链接到链表中即可,删除效率也很好
(2)缺点:在进行检索时,效率仍然较低,比如:检索某个值,需要从头节点开始遍历
3、树存储方式的分析
(1)能提高数据存储,读取的效率,,比如:利用二叉排序树,既可以保证数据的检索速度,同时也可以保证数据的插入,删除,修改的速度
树的构成
1、空树:空集合,空树中没有节点
2、孩子节点/子节点:一个节点含有的子树的根节点称为该节点的子节点
3、节点的度:一个节点含有的子节点的个数
4、叶节点/终端节点:度为0的节点
5、非终端节点/分支节点:度不为0的节点
6、双亲节点/父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点
7、兄弟节点:具有相同父节点的节点互称为兄弟节点
8、树的度:一棵树中,最大的节点的度
9、节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推
10、树的高度或深度:树中节点的最大层次
11、堂兄弟节点:双亲在同一层的节点互为堂兄弟
12、节点的祖先:从根到该节点所经分支上的所有节点
13、子孙:以某节点为根的子树中任一节点
14、森林:由m(m>=0)棵互不相交的树的集合称为森林
15、层次序列按从上到下(从顶到底),从左到右来排序
性能总结
算法(数据结构) | 最坏情况下的运行时间的增长数量级(N 次插入之后) | 平均情况下的运行时间的增长数量级(N 次插入之后) | 是否支持有序性相关的操作 | ||
查找 | 插入 | 查找 | 插入 | ||
顺序查询(无序链表) | N | N | N / 2 | N | 否 |
二分查找(有序数组) | lgN | N | lgN | N / 2 | 是 |
二叉树查找(BST) | N | N | 1.39 * lgN | 1.39 * lgN | 是 |
2-3 树查找(红黑树) | 2 * lgN | 2 * lgN | 1.00 * lgN | 1.00 * lgN | 是 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战