复杂数据结构——树

复杂数据结构——不是简单的线性表,并且每个数据元素之间也可能存在关系,相关的插入、删除操作不仅对数据元素进行操作,同时还要维护数据元素之间的关系.
1.树:一种表达数据之间层次关系的数据结构.
树的每个节点有0或多个子节点,但是只有一个父节点,父节点为空的节点就是根节点.
树结构的相关概念:

  • 树的度:一个节点含有子树的个数称为该节点的度
  • 叶节点:度为0的节点称为叶节点
  • 根节点
  • 树的高度:一棵树的最大层次数就是树的高度
  • 兄弟节点:具有相同父节点的子节点互称为兄弟节点

    树是一种没有环路的图
    根据每个节点的子节点又可以将树分为二叉树和多叉树
    有序的二叉树 = 二叉查找树 = 二叉排序树
    特点:

  • 如果左子树不为空,则左子树上所有节点的值都小于根节点的值
  • 如果右子树不为空,则右子树上所有节点的值都大于根节点的值

    二叉查找树的时间复杂度为O(lgn),简单二叉查找树的插入操作都发生在叶节点,如果构造二叉查找树时一次插入的节点已经是有序的,则二叉树会退化为链表形状的单支数.这种情况下,查找操作的事件复杂度变成O(n).为了优化查找效率,就需要二叉查找树能够具有自平衡功能,保证二叉树始终是一颗平衡树.
    AVL树和红黑树就是自平衡二叉查找树.二者的区别在于维持树的自平衡的方法不一样.
    在算法设计中,只要有条件就应该优先使用AVL树和红黑树,避免简单二叉查找树可能存在的性能问题

二叉查找树在算法中的应用:决策问题(构造决策树)、统计问题、取舍问题

多叉树的典型例子就是B树和各种B树的变形树,B树是一种自平衡多叉查找树. B树常用于文件管理系统和数据库系统. 在算法设计时,如果遇到多路分支且有序的层次结构时,就可以考虑B树

区间树:以区间为数据元素的红黑树,区间树的每个节点都表示一个区间,其关键字是区间的左端点,区间树支持所有的二叉查找树的基本操作,而且区间元素的插入和查找操作都可以在O(lgn)的时间内完成.
区间树常用于区间查询相关的问题,比如判断区间之间是否存在重叠区域等问题.
堆:一种完全树
最大堆:每个节点的值都大于其子树上所有节点的值.
最小堆:每个节点的值都小于其子树上所有节点的值.
利用堆的性质,可以应用在哪些场景?
“求n个数中最大(或最小)的m个数的问题”就是通过维护一个有m个节点的最大堆(最小堆)来实现的
字典树的优点是利用字符串的公共前缀或后缀节约存储空间,查找过程中能减少无谓的完整字符串匹配,便于字符串的统计和查找.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值