数据结构之二叉树(扫盲)

本文主要介绍的是一些常用二叉树的概念扫盲解析,只做简要分析,后续会持续更新

树的基本概念

    树是一种数据结构,树有多个节点(node),用以储存元素。某些节点之间存在一定的关系,用连线表示,连线称为边(edge)。边的上端节点称为父节点,下端称为子节点。本文主要介绍的是二叉树,二叉树(binary)是一种特殊的树,它是每个节点最多有两个子树的树结构,通常子树被称作是 "左子树" 和 "右子树",二叉树常用于实现二叉搜索树。

 

1.完全二叉树

    概念:除最后一层外每个层级都达到最大节点数(2的i-1次方,i为层级数)且最后一层连续靠左集中。完全二叉树是效率很高的数据结构,如图:

2.满二叉树

    概念:每一个层级都达到最大节点数(2的i-1次方,i为层级数)所以说满二叉树一定是完全二叉树,如图

3.二叉查找树

二叉查找树是一种特殊的二叉树,也可以叫二叉搜索树,二叉排序树,它还得具备以下特点

  • 树中每个节点最多有两个子树,通常称为左子树和右子树
  • 若它的左子树不空,则左子树上所有结点的值均小于它的父节点值
  • 若它的右子树不空,则右子树上所有结点的值均大于它的父节点值
  • 它的左右子树仍然是一棵二叉查找树 

如图:

4.平衡二叉树

    通俗点讲就是如果树的节点重新排序后,树的高度不会变小则为平衡二叉树,以上文中图均为平衡二叉树,遍历的时间复杂度为 O(logn)

5.红黑树

    红黑树是一种自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,通过左旋 右旋 变色来重新达到平衡,红黑树还必须满足以下几点:

1.每个节点要么是黑色,要么是红色
2.根节点为黑色
3.红色节点的两个子节点必须为黑色
4.每个叶子节点是黑色null节点
5.任意节点到叶子节点之间包含相同的黑色节点数

如图:

  • 左旋:以某个节点作为支点(旋转节点),其右子节点变为旋转节点的父节点,右子节点的左子节点变为旋转节点的右子节点,左子节点保持不变。
  • 右旋:以某个节点作为支点(旋转结点),其左子节点变为旋转节点的父结点,左子节点的右子节点变为旋转节点的左子节点,右子节点保持不变。
  • 变色:节点的颜色由红变黑或由黑变红

  红黑树应用:

    linux内核的epoll模型,用于存放事件的结构体。

6.AVL树

    AVL树是一种高度自平衡的二叉查找树,任意节点的两个子节点高度差最大为1,查询效率略高于红黑树,但增加和删除效率低于红黑树,因为要保持高度自平衡有额外的自旋操作 

如图 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值