【数据结构与算法】二叉树+二叉搜索树+平衡二叉树+红黑树--效率比较

分析方法:
[
二叉树用到递归,与二叉树高度有关,有多高,就有多少次递归,时间复杂度就是"O(树高)"

二叉树的高度与节点关系:
假设节点为N,则树的高度保持在logN附近;所以二叉树的查找效率一般是O(logN)
]

1二叉树     --任意的

2二叉搜索树:   --是二叉树经过排序的,任意一个节点都满足左节点值小于等于父节点,右节点值大于等于父节点
[
又称二叉查找树,亦称为二叉排序树

查找性能:
[
数目为N,树高保持logN附近,查找递归需要logN次,时间复杂度为O(logN)

当先后插入的关键字有序时,二叉搜索树退化成单支树结构。此时树高N。平均查找长度为(N+1)/2,
查找的平均时间复杂度为O(N)。
]

插入性能:
插入效率与查找效率一致。

删除性能:
[
删除节点时,若节点为叶子节点,或者节点只有单一子树,执行一次,则时间复杂度为O(1)

若节点既有左子树又有右子树,则需要执行递归过程,递归执行logN次,对应时间复杂度为O(logN)
]

]

3平衡二叉树:     --插入和删除后,需要用旋转来维持自平衡
[
查找性能:
平衡二叉树是严格平衡的,那么查找过程与二叉搜索树一样,只是平衡二叉树不会出现最差的单支树情形。
 --数目为N,树高保持logN附近,查找递归需要logN次,时间复杂度为O(logN)

插入性能:
插入数据之前需要进行查找操作,查找到插入位置。                 --查找用到的递归,O(logN)
插入数据后需要进行旋转操作,旋转操作复杂度为常量级。        --旋转操作
因此插入数据的时间复杂度与查找相同为O(logN)。

删除性能:
删除数据同样需要查找数据,  --查找用到的递归,O(logN)
在删除数据后需要进行调整。一次删除最多需要需要O(logN)次旋转,       --有点不懂
因此删除数据的时间复杂度为O(logN)+O(logN)=O(2logN)。

]

4红黑树:  ----插入和删除后,需要用旋转和变色来维持黑色自平衡
[
查找性能:
[
数目为N,树高保持logN附近,查找递归需要logN次,时间复杂度为O(logN)

由于红黑树的性质(最长路径长度不超过最短路径长度的2倍),可以说明红黑树虽然不像平衡二叉树一样是严格
平衡的,但平衡性能还是要比二叉搜索树要好。其查找代价基本维持在O(logN)左右,但在最差情况
下(最长路径是最短路径的2倍少1),比平衡二叉树效率低一些。
]

插入性能 :
[
红黑树插入结点时,需要旋转操作和变色操作。但由于只需要保证红黑树基本平衡就可以了。因此插入结点最多
只需要2次旋转,这一点和平衡二叉树的插入操作一样,但是变色操作的时间复杂度为O(logN)。

插入数据之前需要进行查找操作,查找到插入位置。                 --查找用到的递归,O(logN)
旋转2次  --很少,常量级
变色       --普通操作,常量级

合起来就是O(logN)
]

删除性能:
[
红黑树的删除操作代价要比平衡二叉树要好的多,删除一个结点最多只需要3次旋转操作,保证了删除时间复杂
度维持在常量级。

删除数据同样需要查找数据,  --查找用到的递归,O(logN)
旋转3次  --很少,所以是常量级
变色       --普通操作,常量级

合起来就是O(logN)
]

]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值