提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
数据结构——基本数据结构
二叉树, 二叉查询树,二叉查询树
一、二叉树
示例:类似于数学的树状图
二、基本组成
1.父节点数据地址 + 数据 +左子节点数据地址+右子节点数据地址
2.平衡二叉树
查询方便 添加慢
3.排列
二叉树排列序 平衡二叉树是有序排列
平衡二叉树如何有序排列或者查询
小的放在左子节点 大的放在右子节点
查询过程:先拿要查的树和第一个父节点比较比它的大小
若比他小则往左边继续比较一直重复此步骤反之则比较右边
添加–旋转
左旋
向当于一串珠子用左手往左边拉(将父节点转换成左子节点)’‘添加时’‘
什么情况下使用:当二叉树不平衡时(左子树高度小于右子树高度时)使用左旋
右旋
向当于一串珠子用右手往右边拉(将父节点转换成右子节点)
什么情况下使用:当二叉树不平衡时(右子树高度小于左子树高度时)‘’添加时‘’
使用右旋
总结:哪边低往哪边拉
添加
往平衡二叉树里添加数据在添加的过程中会导致二叉树不平衡
那么这个时候我们就得让它重新变成平衡
如何使平衡二叉树在添加数据之后变成平衡呢?
1.先找出不平的父节点
2.看哪边低往哪边旋转
3.再将旋转前的父节点变成左/右子 节点
再添加的过程中我们会遇见一次旋转搞不定的情况
那么我们就得进行两次旋转
例如:
左左
当根节点左子树的左子树有节点插入,导致二叉树不平衡(一次右旋)
左右
当根节点左子树的右子树有根节点插入,导致二叉树不平衡
(将不平的父节点的第一个左子节点作为支点进行一次左旋 然后再将不平衡的父节点作为支点进行一次右旋才可以完成平衡)
右右
当根节点右子树的右子树有节点插入,导致二叉树不平衡(一次左旋)
右左
当根节点右子树的左子树有根节点插入,导致二叉树不平衡
(将不平的父节点的第一个右子节点作为支点进行一次右旋 然后再将不平衡的父节点作为支点进行一次左旋才可以完成平衡)