美文网首页
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