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

C# IList 与List区别二叉树的层序遍历

IList 接口:

  • IList 是一个接口,定义了一种有序集合的通用 API。
  • 继承自 ICollection 接口和IEnumerable<T>,是所有泛型列表的基接,口它提供了对列表中元素的基本操作,如添加、删除、索引访问等。
  • IList 不是一个具体的集合类,而是一组实现了该接口的类的通用接口。

实例化 

既然IList是接口,就不能用new关键字去直接实例化,但是可以用多态的方式去实例化,也就是用其子类(List)去实例化。

     IList<string> Ilist1=new List<string>()    (①)

     与 List<string> list1=new List<string>()   (②)    

①与②区别:

      ①创建了一个list,但是这个list只能用到IList接口中规定那些方法,因为这些方法在List类型中实现了的,所以可以用。

        ②也创建了一个list,这个list可以用List类型中实现的所有方法(当然包括IList规定的那些)

推荐使用①

        因为在面向对象的思想里,推荐使用接口,可以实现松耦合,有很好的扩展性,功能与具体实现很好的分离开,有利于系统的维护与重构。

List 类:

  • ListSystem.Collections.Generic 命名空间中的一个具体实现类,实现了 IList 接口。
  • List 是动态数组,它自动扩展以容纳任意数量的元素。
  • List 提供了对元素的高效访问和操作,支持索引、添加、删除、搜索等操作。

题解

DFS递归的方式层次遍历

  • 使用递归的方式进行深度优先搜索。
  • DFS 方法接受两个参数:当前节点 root 和当前节点所在的层级 level
  • 如果当前节点为空,直接返回。
  • 如果 res 中的列表数量小于当前层级level + 1,说明当前层的列表还没有创建,因此添加一个新的空列表。
  • 将当前节点的值加入到 res 中对应层级的列表中。
  • 递归调用 DFS 处理左子树和右子树,层级加 1。
/*** Definition for a binary tree node.* public class TreeNode {*     public int val;*     public TreeNode left;*     public TreeNode right;*     public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
public class Solution {public List<List<int>> res = new List<List<int>>();public IList<IList<int>> LevelOrder(TreeNode root) {if(root == null)return res.ToArray();DFS(root,0);return res.ToArray();}private void DFS(TreeNode root, int level){if(root == null)return;if(res.Count < level + 1){res.Add(new List<int>());}res[level].Add(root.val);DFS(root.left, level + 1);DFS(root.right, level + 1);}
}

http://www.lryc.cn/news/250307.html

相关文章:

  • 助力android面试2024【面试题合集】
  • 【动态规划】LeetCode-62.不同路径
  • 对 Vision Transformers 及其基于 CNN-Transformer 的变体的综述
  • MongoDB简介
  • 尚硅谷hadoop3.x课程部分资料文件下载,jdk,hadoopjar包
  • vue el-radio-group多选封装及使用
  • Kaggle-水果图像分类银奖项目 pytorch Densenet GoogleNet ResNet101 VGG19
  • TPLink-Wr702N 通过OpenWrt系统打造打印服务器实现无线打印
  • [UGUI]实现从一个道具栏拖拽一个UI道具到另一个道具栏
  • 微服务--08--Seata XA模式 AT模式
  • Doris 数据导入一:Broker Load 方式
  • docker踩坑记录:docker容器创建doris容器间无法通讯问题
  • springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp
  • TCP简介及特性
  • ElasticSearch 排障常用方法
  • 【SA8295P 源码分析 (四)】136 - QNX 如何抓取系统 log 方法 之 网络部分日志抓取方法
  • 传统算法:使用Pygame实现SVM(支持向量机)算法
  • cookie wzws_sess** 逆向
  • JIRA 基本使用
  • 什么是JVM的内存模型?详细阐述Java中局部变量、常量、类名等信息在JVM中的存储位置
  • c#学习相关系列之as和is的相关用法
  • excel合并单元格教程
  • img[src=““] img无路径情况下,页面出现边框
  • TA-Lib学习研究笔记(八)——Momentum Indicators 上
  • 【MATLAB源码-第91期】基于matlab的4QAM和4FSK在瑞利(rayleigh)信道下误码率对比仿真。
  • pywin32后台键鼠
  • 大屏适配方案(vw、vh)
  • 【QuickSort】单边快排思路及实现
  • C++:继承
  • 苍穹外卖--客户催单