数据结构与算法(二)

本文深入探讨了树结构在数据结构中的重要性,特别是二叉搜索树(BST)、AVL树和红黑树。重点讲述了红黑树的规则、插入与删除的调整策略,以及它与AVL树的区别。此外,还提及了map和unordered_map的底层实现选择,指出红黑树在STL中的应用,并简单讨论了epoll的实现原理。
摘要由CSDN通过智能技术生成

1、二叉搜索树(BST)

  • 「左⼩右⼤」,对于每个节点,整棵左⼦树都⽐该节点的值⼩,整棵右⼦树都⽐该节点的值⼤。
  • BST 的中序遍历结果是有序的(升序)
  • 缺点:容易退化成一条链,查找的时间复杂度从O(log2N)退化成O(N)
    思路

2、平衡二叉树(AVL)

  • 在二叉搜索树的基础上加了限制:左右子树的高度差不能超过1

  • 每次进行插入/删除操作时,几乎都需要通过旋转操作保持平衡

  • 左旋:逆时针旋转两个节点,让一个节点被它的右子节点取代,而这个节点就成了右子节点的左子节点

  • 右旋:顺时针旋转两个节点,让一个节点被他的左子节点取代,而这个节点就成了左子节点的右子节点

  • 缺点:在插入/删除比较频繁的场景中,需要频繁的旋转操作,这时候AVL的性能大打折扣

3、红黑树(具有自动平衡机制的二叉搜索树,弱平衡二叉树)

(1) 规则
  • 节点为红色或者黑色;
  • 根节点必须为黑色;叶子节点(null)为黑色;
  • 红黑树不会出现连续的红色节点;
  • 每个节点到叶子节点的所有路径,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值