树与二叉树、堆和堆排序

本文详细介绍了树的概念,包括空树、根节点、叶子节点和树的度。接着讨论了二叉树的类型,如满二叉树和完全二叉树,以及它们的链式和顺序存储方式。堆作为一种特殊的完全二叉树,分为大根堆和小根堆,介绍了堆的向下调整过程。然后,解释了堆排序的原理和步骤,包括构造堆和堆顶元素的调整。最后,提到了Python中的堆模块,并指出堆排序在解决topk问题中的应用。
摘要由CSDN通过智能技术生成

一、树

  • 可以递归定义的数据结构
  • 树是由n个节点组成的集合:
    • n=0,是一颗空树
    • 根节点
    • 叶子节点:最低层,无子节点
    • 树的度:树的所有节点分叉最多的叉数
    • 孩子节点/父节点

1. 二叉树:度不超过2

  • 两个子节点:左右子节点

2. 满二叉树:二叉树的每一层节点数达到最大值

3. 完全二叉树:叶子节点只能出现在最下层和次下层,并且最下层节点都集中在该层最左边

4. 二叉树的存储方式

  • 链式存储方式(链表)
  • 顺序存储方式(列表/数组)
    • 父节点为:i   ——>  左子节点:2i + 1   ——> 右子节点:2i + 2
    • 左(右)子节点:i   ——>  父节点:(i - 1) // 2

二、堆

  • 堆:一种特殊的完全二叉树
    • 大根堆:一颗完全二叉树,满足任一节点都比其孩子节点大
    • 小根堆:一颗完全二叉树,满足任一节点都比其孩子节点小
  • 堆的向下调整
    • 假设:根节点的左右子树都是堆,但自身不是堆
    • 通过一次向下调整将其变为一个堆

三、堆排序

  • 过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值