给你区间的 空 集,请你设计并实现满足要求的数据结构:
很暴力,遍历每一个数组,用set接收,返回set的大小,最后显示空间不足
用到了TreeMap
,之前没用过,查了一下,主要是为了使用这个方法: Map.Entry<K,V> floorEntry(K key)
方法,返回值:小于或等于key的条目,如果没有这样的键,则返回 null
其次,对于解法中while
循环的理解(我最开始认为if
就可以满足要求,不需要while
),但是会有这种情况
TreeMap
TreeMap
是一个能比较元素大小的Map集合,底层是红黑树结构,会对传入的key
进行了大小排序。其中,可以使用元素的自然顺序(也是相当于实现了Comparator
),也可以使用集合中自定义的比较器来进行排序
TreeMap
具有如下特点:
key
;null
键,null
值;常用的方法:
AVL
树(因发明人得名)红黑树,本质上依旧一颗二叉查找树,它满足了二叉查找树的特点,即左子树任意节点的值永远小于右子树任意节点的值。
AVL树
用左右子树的高度差来保持着树的平衡。红黑树,用的是节点的颜色来维持树的平衡。
一颗红黑树必须满足一下几点要求:
科普:NIL节点是就是一个假想的或是无实在意义的节点,所有应该指向NULL的指针,都看成指向了NIL节点,包括叶节点的子节点指针或是根节点的父指针(均是指向null的)
红黑树节点的结构:包含以下几个属性
在将一个节点插入到红黑树中,首选需要将红黑树当做一颗二叉树查找树来对待,将节点进行插入。然后,为新插入的节点进行着色;最后,通过旋转和重新着色的方式来修正树的平衡,使其成为一颗红黑树;
(1)对于红黑树来说,其底层依旧是一颗二叉查找树。当我们插入新的元素时,它依旧会对该元素进行排序比较,将其送入到左子树或者是右子树中。
(2)在将新节点安置好以后,在对其进行着色处理,必须着成红色
为什么要着成红色,而不是黑色呢?——当将新增节点着成红色后,我们违背以上红黑树的要求的条数最少,恢复平衡起来最省事
后,在对其进行着色处理,必须着成红色
为什么要着成红色,而不是黑色呢?——当将新增节点着成红色后,我们违背以上红黑树的要求的条数最少,恢复平衡起来最省事
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务