当前位置: 首页 > wzjs >正文

网站备案有哪些费用深圳seo外包

网站备案有哪些费用,深圳seo外包,图片在线制作免费软件,微信公众号php网站开发【数据结构】 map 和 set 一、二叉搜索树1.1 二叉搜索树的概念1.2 二叉搜索树的操作1.2.1 查找1.2.2 插入1.2.3 删除 1.3 二叉搜索树和 java 类集的关系 二、搜索2.1 概念及场景2.2 模型 三、Map的使用3.1 关于Map的说明3.2 关于Map.Entry<K, V>的说明3.3 Map 的常用方法…

【数据结构】 map 和 set

  • 一、二叉搜索树
    • 1.1 二叉搜索树的概念
    • 1.2 二叉搜索树的操作
      • 1.2.1 查找
      • 1.2.2 插入
      • 1.2.3 删除
    • 1.3 二叉搜索树和 java 类集的关系
  • 二、搜索
    • 2.1 概念及场景
    • 2.2 模型
  • 三、Map的使用
    • 3.1 关于Map的说明
    • 3.2 关于Map.Entry<K, V>的说明
    • 3.3 Map 的常用方法说明
  • 四、set 的说明
    • 4.1 常见方法说明

在这里插入图片描述

一、二叉搜索树

1.1 二叉搜索树的概念

⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树 :

  • 若它的左⼦树不为空,则左⼦树上所有节点的值都小于根节点的值。
  • 若它的右⼦树不为空,则右⼦树上所有节点的值都大于根节点的值。
  • 它的左右⼦树也分别为⼆叉搜索树。

在这里插入图片描述

int[ ] array = {5,3,4,1,7,8,2,6,0,9};

1.2 二叉搜索树的操作

1.2.1 查找

(1)图解
在这里插入图片描述

(2)Java 实现

public class BinarySearchTree {static class TreeNode{public int val;public TreeNode left;public TreeNode right;public TreeNode(int val){this.val = val;}}//当前搜索树的根节点public TreeNode root = null;//查找public TreeNode Search(int val){TreeNode cur = root;while(cur != null){if(cur.val < val){cur = cur.right;}else if(cur.val > val){cur = cur.left;}else{return cur;}}return null;}
}

1.2.2 插入

(1)图解
在这里插入图片描述
(2)Java 实现

//二叉搜索树 插入public void insert(int val){TreeNode newNode = new TreeNode(val);if(root == null){root = newNode;return;}TreeNode cur = root;TreeNode parent = null;while(cur != null){if(cur.val < val){//当前的val < 插入的valparent = cur;cur = cur.right;//往右走}else if(cur.val > val){parent = cur;cur = cur.left;}else{return;}}if(parent.val < val){parent.right = newNode;}else{parent.left = newNode;}}

Test 类:

public class Test {public static void main(String[] args) {int[] array = {10,5,12,13,6};BinarySearchTree binarySearchTree = new BinarySearchTree();for(int x : array){binarySearchTree.insert(x);}BinarySearchTree.TreeNode search = binarySearchTree.search(12);System.out.println(search.val);//12}
}

1.2.3 删除

(1)图解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
(2)Java 实现

//二叉搜索树的 删除public void removeNode(TreeNode cur,TreeNode parent){if(cur.left == null){//左边为空if(cur == root){root = root.right;}else if(cur == parent.left){parent.left = cur.right;}else{//if(cur == parent.right)parent.right = cur.right;}}else if(cur.right == null){//右边为空if(cur == root){root = cur.left;}else if(cur == parent.left){parent.left = cur.left;}else{parent.right = cur.left;}}else{//左右两边都不为空TreeNode target = cur.right;TreeNode targetParent = cur;while(target.left != null){targetParent = target;target = target.left;}if(target == targetParent.left){targetParent.left = target.right;}else{targetParent.right= target.right;}}}

1.3 二叉搜索树和 java 类集的关系

TreeMap 和 TreeSet 即 java 中利⽤搜索树实现的 Map 和
Set;实际上⽤的是红⿊树,⽽红⿊树是⼀棵近似平衡的⼆叉搜索树,即在⼆叉搜索树的基础之上 + 颜⾊以及红⿊树性质验证。

二、搜索

2.1 概念及场景

Map和set是⼀种专⻔⽤来进⾏搜索的容器或者数据结构,其搜索的效率与其具体的实例化⼦类有关。

在这里插入图片描述

可能在查找时进⾏⼀些插⼊和删除的操作,即动态查找,那上述两种⽅式就不太适合了,本节介绍的 Map和Set是⼀种适合动态查找的集合容器。

2.2 模型

⼀般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对。

所以模型会有两种:

  1. 纯 key 模型,⽐如:
    ◦ 有⼀个英⽂词典,快速查找⼀个单词是否在词典中
    ◦ 快速查找某个名字在不在通讯录中
  2. Key-Value 模型,⽐如:
    ◦ 统计⽂件中每个单词出现的次数,统计结果是每个单词都有与其对应的次数:<单词,单词出现
    的次数>
    ◦ 梁⼭好汉的江湖绰号:每个好汉都有⾃⼰的江湖绰号
  3. Map中存储的就是key-value的键值对,Set中只存储了Key

三、Map的使用

3.1 关于Map的说明

Map是⼀个接⼝类,该类没有继承⾃Collection,该类中存储的是<K,V>结构的键值对,并且K⼀定是 唯⼀的,不能重复。

3.2 关于Map.Entry<K, V>的说明

在这里插入图片描述

3.3 Map 的常用方法说明

在这里插入图片描述

import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;public class Test {public static void main(String[] args) {//底层是二叉搜索树,每次存元素 都要进行大小比较 --》 利用key值进行比较TreeMap<String,Integer> map = new TreeMap<>();map.put("def",4);//def 出现4次 放进去map.put("abc",6);//abc 出现6次map.put("abc",16);//根据key获取val值Integer integer = map.get("abc");System.out.println(integer);//6,后面更新为16integer = map.get("abcd");//nullinteger = map.getOrDefault("abcd",9999);//9999System.out.println(integer);/* //根据key的值,返回valueInteger rev = map.remove("abc");System.out.println(rev);*///Set集合:存放在这个集合类中的 都是自动去重的Set<String> set = map.keySet();System.out.println(set);//[def]Collection<Integer> collection = map.values();System.out.println(collection);//[16, 4]//Set<Map.Entry<K,V>> entrySet()Set<Map.Entry<String,Integer>> entrySet = map.entrySet();for(Map.Entry<String,Integer> entry:entrySet){System.out.println("key:" +entry.getKey() + " value:"+entry.getValue());/*  key:abc value:16key:def value:4*/}System.out.println("========");System.out.println(map);//{abc=16, def=4}}}

总结:new Treemap 底层是一颗红黑树,红黑树就是二叉搜索树,其增删查改的效率是O(log2n)。

四、set 的说明

Set与Map主要的不同有两点:Set是继承⾃Collection的接⼝类,Set中只存储了Key

4.1 常见方法说明

在这里插入图片描述

import java.util.*;public class Test {public static void main(String[] args) {TreeSet<String> set = new TreeSet<>();set.add("abc");set.add("def");set.add("hello");set.add("hello");//不能重复添加System.out.println(set);//[abc, def, hello]Iterator<String> it = set.iterator();while(it.hasNext()){System.out.println(it.next()+" ");/* abcdefhello*/}}}
http://www.dtcms.com/wzjs/316984.html

相关文章:

  • 网站更改url怎么做301阿里指数查询入口
  • 网站上的支付链接该怎么做谷歌搜索引擎入口
  • 谢岗网站仿做营销网络推广哪家好
  • 上海专业网站制作设计公司域名批量查询注册
  • 给别人做网站怎么赚钱吗推广网站有哪些
  • 大连专业做网站seo怎么优化方法
  • 国外做机械设计任务的网站永久免费自动建站
  • 网站建设流程发布网站和网页制作网站怎么优化推荐
  • 哪个网站可以做问卷调查网络营销毕业论文范文
  • 语种网站建设山东服务好的seo
  • 中山精品网站建设方案seo网址优化靠谱
  • 电商网站建长沙网络推广软件
  • 北京做网站源代码的百度识图 上传图片
  • 姜堰网站制作郑州搜索引擎优化公司
  • 惠东网站建设山东今日热搜
  • 阳谷网站建设谷歌seo优化怎么做
  • 重庆网站建设找承越seo岗位是什么意思
  • 做阿拉伯语的网站南宁seo做法哪家好
  • 哪里可以下载ppt免费模板福州seo优化
  • 汝阳网站开发谷歌seo服务商
  • 做系统和做网站哪个简单一些苏州网站排名推广
  • 网站怎么做飘窗软文推广是什么意思
  • 网站建设不能在淘宝发布seo实战视频
  • 网站如何做百度才会收录深圳在线制作网站
  • 自己做炉石卡牌的网站seo优化教学视频
  • 广东品牌网站建设报价表黑马培训机构可靠吗
  • 如何利用网站做淘宝联盟win10优化软件
  • 做批发在哪个网站好去除痘痘怎么有效果
  • 有没有像一起做网店做男装的网站百度竞价排名查询网站
  • 17网站一起做网店的流程上海推广外包