Java算法学习6——平衡二叉树

想利用平衡二叉树的话,可以直接用Java的Treeset/Treemap接口,具体说明可看下面的两个链接:

https://www.liaoxuefeng.com/wiki/1252599548343744/1265117109276544

https://blog.csdn.net/bingxuesiyang/article/details/89228785?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.baidujs&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.baidujs

----------------------------------------------3.27更新-------------------------------------------

package Knowledgement;

import java.awt.RenderingHints.Key;
import java.util.*;

/*本节描述的是Treeset和Treemap
 * 两者都是有序的集合,其中Treeset继承的是Treeset接口,只能保存一个数值,而Treemap继承的是Map接口,可以存储两个数Key和Value
 * 其中只有Key是有序的。两者的有序性的底层实现都是通过红黑树,红黑树即是松弛版的平衡二叉树,平衡二叉树即可以O(logN)的范围内快速查找值
 * 知识点:
 * (1) Vector,LinkedList的排序可以通过Collectios.sort(a,[cmp])来实现,数组的则是
 * Arrays.sort(a,[cmp])
 * (2)Treemap实现了Map接口,Hashmap是无序的,而Treemap存储的数据是会按照Key的顺序进行排序,所以如果想改写排序器的话,要靠key是什么类型
 * (3)Vector 对Array的相互转换
 *   vector->array: Vector<Integer> vec=new Vector<>();int []temp=vec.toArray(new int [vec.size])
 *   array->vector: 利用for循环遍历即可。vec.add
 */ 
public class treesetNtreemap {
	static Comparator<Integer>cmp=new Comparator<Integer>() {
		public int compare(Integer a, Integer b) {
			return b-a;//降序
		}
	};
	public static void main(String []args) {
		Map<Integer,String> newmap=new TreeMap<>();
		newmap.put(1,"orange");
		newmap.put(2, "apple");
		newmap.put(3, "banana");
		for(Integer k:newmap.keySet()) {
			System.out.println(k);
		}
		Map<Integer,String> newmap2=new TreeMap<>(cmp);
		newmap2.put(1,"orange");
		newmap2.put(2, "apple");
		newmap2.put(3, "banana");
		for(Integer k:newmap2.keySet()) {
			System.out.println(k);
		}
		TreeSet<Integer> newtreeset=new TreeSet<>(cmp);
		newtreeset.add(3);
		newtreeset.add(4);
		newtreeset.add(8);
		for(Integer i:newtreeset) {
			System.out.println(i);
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值