一.二叉树

1.首先介绍一下二叉树

(1)二叉树:每个节点最多有两个子树的结构

(2)完全二叉树:叶节点只能出现在最下层和次下层,并且最下一层的节点集中在该层最左边的若干位置的二叉树

(3)满二叉树:叶节点只能出现在最下层

2.7 二叉堆及优先队列

二.二叉堆(堆)

1.堆有序:当一棵二叉树的每个结点都不小于它的两个子结点时,称为堆有序

2.二叉堆:一组能够用堆有序的完全二叉树排序的元素,并且能在数组中按照层级存储。

3.说明:

(1)二叉堆可以用数组来表示,从1-N,根节点位置在a[1]

(2)二叉堆可以不使用指针而是简单的使用数学关系,来表示结构

(3)位置k的结点的父节点是(int)k/2,两个子结点的位置是2k和2k+1

(4)一颗大小为N的完全二叉树的高度是|_lgN_|

2.7 二叉堆及优先队列

4.堆的维护

(1)上浮。当某个结点比父结点更大时,需要交换它和父结点的位置,并继续判断,直到比父结点小。

    private void swim(int k) {
        while(k>1 && less(k/2,k)) {
             exch(k,k/2);
             k=k/2;
        }
    }
View Code

相关文章:

  • 2021-04-09
  • 2022-12-23
  • 2021-10-22
  • 2022-01-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-15
猜你喜欢
  • 2021-11-04
  • 2021-05-22
  • 2021-12-02
  • 2021-09-08
  • 2021-08-19
  • 2021-05-29
相关资源
相似解决方案