美文网首页
Java数据结构(二)

Java数据结构(二)

作者: 芳心之纵火犯 | 来源:发表于2019-08-08 16:01 被阅读0次

前言

首先声明一点,本文比较苍白无力,因为是看视频理解后用来记录,方便查看的,如想详细学习可私信回复我。
文章内容来自 享学课堂King老师ppt课件;大家不喜勿喷。

1.二叉排序树

二叉排序树(BST,Binary Sort Tree)也称二叉查找树(Binary Search Tree),或二叉搜索树。
满足以下属性:

  • 左子树的所有的值小于根节点的值
  • 右子树的所有的值大于根节点的值
  • 左、右子树满足以上两点


    二叉排序树1.png

1.查找操作:Find

查找的值X从根节点开始
1.如果X小于根节点值,则在左子树中继续查找;
2.如果X大于根节点值,则在右子树中继续查找;
3.如果X值等于根节点值,则返回该节点;
4.如果都查不到,则返回空Null;
查找的效率决定于树的高度。

2.插入操作:Insert

插入的值X从根节点开始查找
1.X值小于该节点值,在左子树中继续;
2.X值大于该节点值,在右子树中继续;
3.如果节点是叶节点,X值小于该节点值则插入左子节点,否则插入右节点;

3.删除操作:Delete

插入的值X从根节点开始查找
1.如果节点的值等于X,则删除;
2.X值小于该节点值,在左子树中继续;
3.X值大于该节点值,在右子树中继续;

2.平衡二叉树

平衡二叉树(AVL树,Balance Binary Search Tree )
它是一 棵二叉排序树,它的左右两个子树的高度差(平衡因子)的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
目的:使得树的高度最低,因为树查找的效率决定于树的高度。
如下:40节点:左子树高度为3,右子树高度为2,满足;
30节点:左子树高度为2,右子树高度为0,不满足;


平衡二叉树2.png

如果A是一颗平衡二叉树,如果新插入一个元素,会有两个结果:
平衡没有被打破,不用调整;平衡被打破,需要调整
调整原则:根据插入节点与失衡结点的位置关系来划分
1.LL旋转
插入节点在失衡结点的左子树的左边,只需要经过一次左旋即可达到平衡


LL旋转.png

2.RR旋转
插入节点在失衡结点的右子树的右边,只需要经过一次右旋即可达到平衡


RR旋转.png

3.LR旋转
插入节点在失衡结点的左子树的右边,失衡结点的左子树先做RR旋转,失衡结点再做LL旋转也可达到平衡


LR旋转.png

4.RL旋转
插入节点在失衡结点的右子树的左边,失衡结点的右子树先做LL旋转,失衡结点再做RR旋转也可达到平衡


RL旋转.png

相关文章

网友评论

      本文标题:Java数据结构(二)

      本文链接:https://www.haomeiwen.com/subject/ebvxjctx.html