数据结构_红黑树和List集合_介绍&常用方法
数据结构_红黑树
二叉树:binary tree,是每个结点不超过2的有序数(tree)
简单的理解,就是一种类似与我们生活中树的结构,只不过每个结点上都最多只能有两个子结点
二叉树是每个节点最多有两个子树的树构造,顶上的叫根结点,两边被称作“左子树”和“右子树”
如图:
排序树/查找树:猜数字小游戏1-100之间的数字,从50开始猜一下减去一半在二叉树的基础上元素是有大小顺序的
左子树小,右子树大
*衡树:左子树和有孩子相等
不*衡树:左孩子!=右孩子
红黑树:特点:趋*与*衡树,查询的速度非常快,查询叶子节点最大次数和最小次数不能超过2倍
约束:
1.节点可以使红色的或黑色的
2.根节点是黑色的
3.叶子节点(空节点)是黑色的
4.每个虹色的节点的子节点都是黑色的
5.任何一个节点到其每一个叶子节点的所有路径上黑色节点致相同
List集合_介绍&常用方法
List接口的特点:
1.有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)
2.有索引,包含一些带索引的方法
3.允许存储重复的元素
List接口中带索引的方法(特有)
1.void add(int index,E element):将指定的元素,添加到该集合中的指定位置上
2.E get(int index):返回集合中指定位置的元素
3.E remove(int index):移动列表中指定位置的元素,返回的是被移动的元素
4.E set(int index,E element):用指定元素替换集合中指定,返回值的更新前的元素。
注意:
操作索引的时候,一定要防止索引越界异常
public class demg_010 { public static void main(String[] args) { //创建ArrayList集合返回一个List接口对象 List<String> list = new ArrayList<>();//多态 //往集合中添加数据 list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("a"); //打印集合输出 System.out.println(list); System.out.println("--------------------"); //在c和d之间添加一个ithima list.add(3,"itheima"); System.out.println(list); //移除元素 String remove = list.remove(4); System.out.println("被移除的元素:"+remove); //替换指定位置的元素,返回值的更新前的元素 String k = list.set(2, "k"); System.out.println("被替换的元素:"+k+" "+list); System.out.println("--------------------------");//索引超出就抛出异常 String s = list.get(5);//错误 System.out.println(s); } }
运行结果:
List集合的三种遍历输出格式:
//list集合遍历有3种方式 //使用普通的for循环 for (int i = 0; i <list.size() ; i++) { System.out.println(list.get(i)); } System.out.println("=============="); //迭代器遍历 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()){ String next = iterator.next(); System.out.println(next); } System.out.println("============="); //增强for循环遍历 for (String s : list) { System.out.println(s); }
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix