【二叉树】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

数据结构——基本数据结构

二叉树, 二叉查询树,二叉查询树

一、二叉树

示例:类似于数学的树状图

二、基本组成

1.父节点数据地址 + 数据 +左子节点数据地址+右子节点数据地址

2.平衡二叉树

查询方便 添加慢

3.排列

二叉树排列序 平衡二叉树是有序排列
平衡二叉树如何有序排列或者查询
小的放在左子节点 大的放在右子节点
查询过程:先拿要查的树和第一个父节点比较比它的大小
若比他小则往左边继续比较一直重复此步骤反之则比较右边

添加–旋转

左旋

向当于一串珠子用左手往左边拉(将父节点转换成左子节点)’‘添加时’‘
什么情况下使用:当二叉树不平衡时(左子树高度小于右子树高度时)使用左旋

右旋

向当于一串珠子用右手往右边拉(将父节点转换成右子节点)
什么情况下使用:当二叉树不平衡时(右子树高度小于左子树高度时)‘’添加时‘’
使用右旋

总结:哪边低往哪边拉

添加

往平衡二叉树里添加数据在添加的过程中会导致二叉树不平衡
那么这个时候我们就得让它重新变成平衡

如何使平衡二叉树在添加数据之后变成平衡呢?

1.先找出不平的父节点
2.看哪边低往哪边旋转
3.再将旋转前的父节点变成左/右子 节点

再添加的过程中我们会遇见一次旋转搞不定的情况

那么我们就得进行两次旋转
例如:

左左

当根节点左子树的左子树有节点插入,导致二叉树不平衡(一次右旋)

左右

当根节点左子树的右子树有根节点插入,导致二叉树不平衡
(将不平的父节点的第一个左子节点作为支点进行一次左旋 然后再将不平衡的父节点作为支点进行一次右旋才可以完成平衡)

右右

当根节点右子树的右子树有节点插入,导致二叉树不平衡(一次左旋)

右左

当根节点右子树的左子树有根节点插入,导致二叉树不平衡

(将不平的父节点的第一个右子节点作为支点进行一次右旋 然后再将不平衡的父节点作为支点进行一次左旋才可以完成平衡)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值