二叉树 和 平衡二叉树

HashMap  在Jdk1.8 以后   在链表长度超过8以后  把连接转换成 红黑树了

原因:  红黑树 效率更高效 

特殊情况  : 二叉树 退化成链表了  左右两端不平衡,那么此时 二叉树的查询时间  和  链表一样都是O(n)

 

一 平衡二叉树  为了 避免 二叉树退化成链表的极端情况  

即使元素很多,二叉树的深度 【根节点到子节点的最远距离 】也只有五层

查找 二叉树的任一元素 通过二分法 最多查找五次就确定了。从而 一颗二叉树 查找效率是和树的高度有关系的。

 

而平衡二叉树 就是通过某种方式,来保证 一个二叉树 不会退化成链表;

判断平衡被破坏: 通过左右2个子节点的高度差 来看的   差>1  表明不平衡

平衡二叉树的处理方案: 旋转

多元素处理:

这时是平衡状态  左侧高度是2  右侧是1   高度差是1  平衡

如果再添加一个元素的话:

操作后:

 

 

 

二  红黑树 是不是平衡二叉树?

严格意义上 不是平衡二叉树,它不能保证 左右节点高度差不能超过1 ,因为平衡二叉树 获得平衡 很容易触发旋转的操作,,红黑树为了获得比平衡二叉树,更高的插入和删除的效率,在维持树的平衡上 做出了一定的取舍,从而在整体性能【因为查询上不一定优于平衡二叉树】上是优于 平衡二叉树的。

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值