java数据结构基本

栈:    先进后出,后进先出

队列:    先进先出,后进后出

数组:    查询快:    通过地址值和索引定位,查询任意数据耗时相同    (元素在内存中是连续储存的)
    删除慢:    将原始数据删除,同时后面元素后移,再添加
    添加慢:    添加位置后的数据后移,在添加元素
链表
    单向链表:    节点:    数据,下一个节点地址值,(元素在内存中是不连续的)
            查询慢:    无论查什么数据都要从头开始
            增删快:    只要将对应节点的地址值修改就可以了
    
    双向链表:    节点:    前一个节点的地址值,数据,后一个节点的地址值
        

树:    二叉树:    任意节点的子节点数量<=2
        节点:    父节点地址,左子节点地址,右子节点地址,值
    
        遍历:    前序,中序,后序,层序
            前序:    从根开始,按照中,左,右顺序遍历
            中序:    从最左边的子节点开始,左,中,右 顺序遍历
            后序:    从最左边的子节点开始,左,右,中 顺序
            层序:    一层一层遍历

        二叉树弊端:        只能一个一个遍历才能获取

    二叉查找树:    从根节点开始,大的往右,小的往左,一样不存
            查找效率高,一般用中序遍历,因为是从小到大排列

        二叉查找树弊端:    当出现连续递增的数字添加的时候,会将层级变高,降低效率
    
    平衡二叉树:    从根节点开始,大的往右,小的往左,一样不存
            任意节点左右子树高度差不超过1
            
        通过旋转来保持树的高度

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

    红黑树:        节点: 父节点地址,值,左子节点,右子节点,颜色    
    
            自平衡的二叉查找树,也叫二叉B树
            每一个节点有储存节点的颜色,可以是红或者黑,不是高度平衡的,按照红黑规则实现

         红黑规则:    每一个节点要么黑要么红
                根节点是黑色
                如果一个节点没有子节点或父节点,那就设子节点为Nil,叫叶节点,黑色
                如果节点是红色,那么子节点不能是黑色
                每一个节点,从该节点到其后代节点的简单路径上,都包含相同数目黑色节点

          红黑树添加规则
        根节点        直接变成黑色
        非根:    父黑:    不操作
            父红:    叔红:将父设黑,叔设黑,祖父设红,若祖父为根再变黑,
                    若祖父非根,将祖父设为当前节点再次判断
                叔黑且当前节点为右子节点:    将父作为当前节点左旋,再判断
                叔黑且当前节点为左子节点:    将父设黑,祖父设红,祖父为支点右旋
            


            
        
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值