树好像没有辣么难

简介: 之前不会用树处理数据,直到怎么用之后,发现还是很好用的
最近用到查找,很简单的字符串去重操作,从A字符串集合中去掉在B字符串集合中已经存在的字符串,去重很见到,从A中读取一个,在B里面查找,如果B里面已经有了,那就不管,如果没有,那就保留或者存储到临时容器中,当A被遍历一遍之后,也就查完了。思路是这样,如何快速的遍历查找是关键,按照原有逻辑,嵌套遍历时间复杂度O(sumA*sumB)时间开销过长,严重破坏体验效果
解决思路:首先要确定,使用查找方式比遍历方式要节省时间,目前我已知的快速查找方式是二分查找,这样比较快速,创建红黑树提供思路,确定string为树节点的值,如何确定键,也就是key值是一个问题,确定键值对唯一,不能产生一个键对应两个值的问题。
最简单的,想到了md5值,因为不同的字符串得到的md5也不一样,这时候我走进一个误区,当A,B两个树容器全部建立完毕之后,我仍然使用查找的方式,确定A[k]是不是在B也有一个B[k],仍然是遍历查找B[k]解决,时间上虽然有节省,但是没有减少多少。
经过完善,有两个方案。
方案一:
  吧A的k和v拿出来,添加到B中,如果B的长度改变,那么就是添加成功,如果长度没有变,则B中有k,v对与功能的键值对存在
方案二:
  获取A的k,v和B的k集合B.keys(),如果k在B.keys()里面,就说明B中有v,如果没有,就获取了对比出来要处理的v
目录
相关文章
|
7月前
LeetCode 树-简单题 4个典例
LeetCode 树-简单题 4个典例
32 0
|
7月前
|
存储 算法 关系型数据库
【面试普通人VS高手系列】b树和b+树的理解
【面试普通人VS高手系列】b树和b+树的理解
|
存储 关系型数据库 MySQL
浅浅谈一谈B树和B+树
浅浅谈一谈B树和B+树
|
机器学习/深度学习 安全
洛谷P2245 星际导航(kruskal重构树)
洛谷P2245 星际导航(kruskal重构树)
123 0
2021年圣诞节送自己一颗树吧
2021年圣诞节送自己一颗树吧
|
存储 算法
漫画:什么是 “哈夫曼树” ?
哈夫曼树是由麻省理工学院的哈夫曼博士于1952年发明,这到底是一颗什么样的树呢? 刚才我们学习了树的带权路径长度(WPL),而哈夫曼树(Huffman Tree)是在叶子结点和权重确定的情况下,带权路径长度最小的二叉树,也被称为最优二叉树。 举个例子,给定权重分别为1,3,4,6,8的叶子结点,我们应当构建怎样的二叉树,才能保证其带权路径长度最小? 原则上,我们应该让权重小的叶子结点远离树根,权重大的叶子结点靠近树根。
346 0
漫画:什么是 “哈夫曼树” ?
|
机器学习/深度学习 存储 算法
刷穿剑指offer-Day22-树I 树的基础知识讲解!
刷穿剑指offer-Day22-树I 树的基础知识讲解!
143 0
|
算法 前端开发 程序员
「LeetCode」572-另一颗树的子树⚡️
「LeetCode」572-另一颗树的子树⚡️
174 0
「LeetCode」572-另一颗树的子树⚡️
|
存储 SQL 缓存
拜托,别再问我什么是 B+ 树了
拜托,别再问我什么是 B+ 树了
漫画:什么是AVL树?(修订版)
而在AVL树当中,我们通过“平衡因子”来判断一颗二叉树是否符合高度平衡。 到底什么是AVL树的平衡因子呢? 对于AVL树的每一个结点,平衡因子是它的左子树高度和右子树高度的差值。只有当二叉树所有结点的平衡因子都是-1, 0, 1这三个值的时候,这颗二叉树才是一颗合格的AVL树。
177 0
漫画:什么是AVL树?(修订版)