数据结构--二叉树

二叉树

什么是二叉树

二叉树(Binary Tree)是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点右子节点。二叉树是各种树结构的基础,广泛应用于数据存储、排序、搜索等领域。
在这里插入图片描述

二叉树的基本术语

  • 节点(Node):二叉树的基本单元,每个节点包含一个数据元素和两个指向其子节点的指针(或引用)。
  • 根节点(Root Node):二叉树最顶部的节点,整个树从根节点开始。
  • 父节点(Parent Node):对于某个节点来说,直接指向它的节点称为它的父节点。
  • 子节点(Child Node):对于某个节点来说,它直接指向的节点称为它的子节点,最多有两个子节点(左子节点和右子节点)。
  • 叶节点(Leaf Node):没有子节点的节点,也称为终端节点。
  • 深度(Depth):从根节点到某个节点的路径长度。
  • 高度(Height):从某个节点到其叶节点的最长路径长度,叶节点的高度为 0。

二叉树的类型

满二叉树(Full Binary Tree)

  • 定义:满二叉树是一种特殊的二叉树,树中每个节点要么没有子节点,要么有两个子节点。
  • 特点:每一层上的节点数都达到了最大值。满二叉树是完全二叉树的一种特例
       1
      / \
     2   3
    / \ / \
   4  5 6  7

完全二叉树(Complete Binary Tree)

  • 定义:完全二叉树是一种二叉树,所有层都完全填满,除了最后一层。最后一层的节点必须从左到右排列紧密,中间不能有空缺。
       1
      / \
     2   3
    / \  /
   4  5 6

平衡二叉树(Balanced Binary Tree)

  • 定义:平衡二叉树是一种特殊的二叉树,它的左右子树的高度差不超过 1。
  • 特点:为了保证查找的效率接近 O(log n),平衡二叉树始终保持相对平衡,避免极端情况出现。
       1
      / \
     2   3
    /     \
   4       5

二叉搜索树(Binary Search Tree, BST)

  • 定义:二叉搜索树是一种特殊的二叉树,具有以下性质:
    • 对于每个节点,其左子树中的所有节点值小于该节点的值。
    • 对于每个节点,其右子树中的所有节点值大于该节点的值。
  • 特点
    • 中序遍历二叉搜索树会得到一个有序的序列(从小到大)。
    • 查找、插入和删除操作的时间复杂度平均为 O(log n),最坏情况下为 O(n)(当树退化成链表时)。

平衡二叉搜索树

  • 定义:平衡二叉搜索树(如 AVL 树、红黑树)是二叉搜索树的一个扩展,它通过自我调整使得树保持平衡,从而保证操作的时间复杂度为 O(log n)
  • 特点
    • AVL 树:左右子树高度差不超过 1。
    • 红黑树:通过颜色标记节点并根据特定规则旋转,使树保持平衡。
       3
      / \
     2   5
    /   /
   1   4

二叉树的遍历方式

前序遍历(Pre-order Traversal)

  • 顺序:根节点 -> 左子树 -> 右子树
  • 算法步骤
    1. 访问根节点。
    2. 递归前序遍历左子树。
    3. 递归前序遍历右子树。

中序遍历(In-order Traversal)

  • 顺序:左子树 -> 根节点 -> 右子树
  • 算法步骤
    1. 递归中序遍历左子树。
    2. 访问根节点。
    3. 递归中序遍历右子树。

后序遍历(Post-order Traversal)

  • 顺序:左子树 -> 右子树 -> 根节点
  • 算法步骤
    1. 递归后序遍历左子树。
    2. 递归后序遍历右子树。
    3. 访问根节点。

层序遍历(Level-order Traversal)

  • 顺序:按层从左到右依次遍历
  • 算法步骤
    1. 使用队列,从根节点开始。
    2. 依次访问队列中的节点,并将其子节点按从左到右的顺序加入队列。

❤觉得有用的可以留个关注~❤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值