数据结构-二叉树

本文详细介绍了二叉树的基本概念,包括节点定义、度、树高等,并阐述了不同遍历方式(前序、中序、后序和层序)。重点讲解了二叉查找树的规则和可能出现的长短腿问题,以及平衡二叉树(如AVL树)的插入规则、旋转机制,特别是左旋和右旋的两种情况。
摘要由CSDN通过智能技术生成

名词解析

度:每个节点的子树数量
树高:树的层数
根节点:最顶层的节点
左子节点:父节点左下方的节点
右子节点:父节点右下方的节点
根节点的左子树:根节点的左子节点及其子节点下方的所有节点
根节点的右子树:根节点的右子节点及其子节点下方的所有节点

节点中存储的内容:

在这里插入图片描述

二叉树

度小于等于2的数
查找规则(前中后表示的是遍历时,当前节点的位置):
前序:当前节点,左节点,右节点
中序:左节点,当前节点,右节点
后续:左节点,邮寄诶单,当前节点
层序:按层进行遍历

二叉查找树

二叉查找树的规则为:小的存右边,大的村左边,一样的不存
二叉查找树的弊端为:会出现长短腿的现象

平衡二叉树(AVL)

  • 平衡二叉树插入规则同二叉查找树一样,小的存右边,大的村左边,一样的不存

  • 平衡二叉树是通过旋转机制来保障平衡的,旋转的规则是:当任意一节点的高度差大于1时,进行旋转(即任意一个节点的左右子树的高度差大于1时进行旋转(通过过插入节点开始,不断的王父节点查找不平衡点))

  • 旋转分为左旋和右旋

    • 左旋:左旋有两种情况
      1. 当不平衡点的左节点不存在右节点:直接右旋即可
      2. 当不平衡点的左节点存在右节点:右旋后需要,将不平衡点的左节点的右节点设置成不平衡点的左节点
    • 右旋
      1. 当不平衡点的右节点不存在左节点: 直接左旋即可
      2. 当不平衡点的右节点存在左节点:将不平衡点向左拉,将补平衡点的右节点当成新支点,将右节点的左子树设置为不平衡点的右节点
  • 当平衡二叉树满足旋转规则时,旋转的四种情况

    • 左左(当根节点的左子树的左子树有节点插入,导致的二叉树不平衡):直接使用右旋即可
    • 左右(当根节点的左子树的右子树有节点插入,导致的二叉树不平衡):先以插入点的父节点为支点进行局部左旋,然后在进行右旋
    • 右右(当根节点的右子树的右子树有节点插入,导致的二叉树不平衡):直接使用左旋
    • 右左(当根节点的右子树的左子树有节点插入,导致的二叉树不平衡):先以插入点的父节点为支点进行局部右旋,然后在进行左旋
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值