二叉树:满二叉树、完全二叉树
满二叉树:叶子节点都在最底层,除了叶子节点,其他节点都有左右两个子节点;
完全二叉树:叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大;
堆
堆的插入(最大堆)
堆的删除(最大堆)
Java的实现:PriorityQueue
# 父index 找 子index:
左子:2 * index + 1
右子:2 * index + 2
# 子index 找 父 index:
数学运算:(index-1) / 2
位运算:(index-1) >>> 2
插入
删除
扩展
>>>与>>区别?
>>>为无符号右移
无论正负,高位都补0,
>>为右移
正数的话,高位补0
负数的话,高位补1
7 >>> 1
7 >> 1
-7 >>> 1
-7 >> 1