求一个算法,用来实现
  • 缩进效果,成功后扩展到javascript中
  • guoyun911 2010-09-21 03:43:43
    数据集合:

    id ParentId Name
    -----------------------------------------
    1 0 老总
    2 1 市场副总
    3 1 技术副总
    4 1 行政副总
    5 2 市场部
    6 4 财务部
    7 4 行政部
    8 3 C#技术部
    9 3 JAVA技术部
    10 9 J2EE技术部
    11 9 J2ME技术部
    ------------------------------------------

    说明:
    id: 是每个元素的标识
    ParentId: 父级元素标识
    Name: 部门名称

    求助:
    以上数据放入集合对象中,通过算法显示部门的树状结构:

    ---------------------------
    老总
    技术副总
    C#技术部
    JAVA技术部
    J2EE技术部
    J2ME技术部
    行政副总
    财务部
    行政部
    市场副总
    市场部
    ----------------------------


    紧急求助各位,谢谢帮忙,分没多少了,尽量给了!

    ...全文
    345 32 打赏 收藏 转发到动态 举报
    写回复
    用AI写文章
    32 条回复
    切换为时间正序
    请发表友善的回复…
    发表回复
    guoyun911 2010-09-25
    • 打赏
    • 举报
    回复
    谢谢。。。代码整理中……
    xzjxylophone 2010-09-25
    • 打赏
    • 举报
    回复
    关注中。。。。。。。
    symbol_bc 2010-09-25
    • 打赏
    • 举报
    回复

    这是一个匿名方法,其实和普通的循环一样,他完全等价于:

    for (int i = 0; i < this.departList.Count; i++)
    {
    Department p = this.GetParent(this.departList[i]);

    while (p != null)
    {
    this.departList[i].Depth++;
    p = this.GetParent(p);
    }
    }


    forreach就是for循环,我感觉,匿名方法优缺点都有,可以比较好的使用上下文变量,在写一些短小代码时不用没必要声明新方法。
    delegate (){}就是这样一样形式,2.0中已经可用,3.5中可用lambda表达式,更加优美。
    guoyun911 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 20 楼 liue_0612 的回复:]
    delegate(){}
    表示委托,委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法。
    [/Quote]

    这些资料我查过了。。。如果我明白你这句话是什么意思的话,我不会提出问题的。。。
    liue_0612 2010-09-25
    • 打赏
    • 举报
    回复
    delegate(){}
    表示委托,委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法。
    guoyun911 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 18 楼 symbol_bc 的回复:]
    你既然是3.5的话,运行应该没问题,而且你也应该可以看到结果了。
    其中一些linq和lambda的写法可能不兼容2.0,不过改起来也不难,你应该自己试试。
    要是扩展到js的话,其实你的意思应该是从后台获取一个数据源然后生成,添加节点都在js中做吧,
    虽然不算难,但是和c#中的代码可就不一样了,不过思想一样。
    你可以看看开源库中的js树。
    [/Quote]
    谢谢你的详细介绍,不过还有一个问题得请教你!


    this.departList.ForEach(delegate(Department t)
    {
    Department p = this.GetParent(t);

    while (p != null)
    {
    t.Depth++;
    p = this.GetParent(p);
    }

    });




    这段代码中的delegate,我不是很清楚delegate(){}这个东西怎么用,代表什么意思,能帮我解释一下么?谢谢!
    symbol_bc 2010-09-25
    • 打赏
    • 举报
    回复
    你既然是3.5的话,运行应该没问题,而且你也应该可以看到结果了。
    其中一些linq和lambda的写法可能不兼容2.0,不过改起来也不难,你应该自己试试。
    要是扩展到js的话,其实你的意思应该是从后台获取一个数据源然后生成,添加节点都在js中做吧,
    虽然不算难,但是和c#中的代码可就不一样了,不过思想一样。
    你可以看看开源库中的js树。
    guoyun911 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 14 楼 symbol_bc 的回复:]
    这句话的意思是 取得当前节点的所有下一级子节点
    [/Quote]

    还有一点是,我最希望能在JAVASCRIPT里实现该功能,这段代码可以扩展到JS里么?
    guoyun911 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 13 楼 symbol_bc 的回复:]
    你用的是vs2008还是2005呢?换句话说是framework 2.0 还是3.5呢?这是一个linq写法
    [/Quote]

    哦。。我明白点了,这句话长的很想SQL语句。。我目前用的是VS2008,也就是说,是framework3.5,但是希望代码兼容3.5和2.0,换一种写法是什么样的呢?谢谢你为我解答!
    whowhen21 2010-09-25
    • 打赏
    • 举报
    回复
    帮顶,6L代码不错哦!
    ***********************************************************
    欢迎使用CSDN 小秘书
    ***********************************************************
    symbol_bc 2010-09-25
    • 打赏
    • 举报
    回复
    这句话的意思是 取得当前节点的所有下一级子节点
    symbol_bc 2010-09-25
    • 打赏
    • 举报
    回复
    你用的是vs2008还是2005呢?换句话说是framework 2.0 还是3.5呢?这是一个linq写法
    guoyun911 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 8 楼 symbol_bc 的回复:]
    C# code


    namespace Test
    {
    public partial class _Default : System.Web.UI.Page
    {

    protected void Page_Load(object sender, EventArgs e)
    {

    departList = new……
    [/Quote]

    请问一下。。

    var temp = from dept in departList
    where dept.ParentID = node.ID
    select dept;


    这句是什么意思?谢谢
    symbol_bc 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 30 楼 jianshao810 的回复:]
    这是linq语言。。
    意思是说
    departList 里面的对象中 如果 s.ID == t.ParentID 返回是true。那么就返回。。。
    s.ID == t.ParentID 这是一个委托。。
    [/Quote]

    这不是linq,是lambda表达式,我上边和你说过那个匿名方法的事,就是那个delete () {}那个,在3.5中匿名方法又有了新的表示方式,就是这个lambda表达式。
    他等价于

    private Department GetParent(Department t)
    {
    if (t == null)
    return null;
    return this.departList.Find(s => s.ID == t.ParentID);
    this.departList.Find(delete (Department s){
    return s.ID == p.ParentID;
    });
    }

    jianshao810 2010-09-25
    • 打赏
    • 举报
    回复
    http://blog.csdn.net/godpreserve/archive/2009/09/17/4563593.aspx
    可以看看这个。。
    jianshao810 2010-09-25
    • 打赏
    • 举报
    回复
    这是linq语言。。
    意思是说
    departList 里面的对象中 如果 s.ID == t.ParentID 返回是true。那么就返回。。。
    s.ID == t.ParentID 这是一个委托。。
    guoyun911 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 28 楼 symbol_bc 的回复:]
    呵呵,那是因为我凑巧今天没啥事!!呵呵
    [/Quote]

    整理代码的过程中,又发现一个地方没见过

    private Department GetParent(Department t)
    {
    if (t == null)
    return null;
    return this.departList.Find(s => s.ID == t.ParentID);
    }



    那个s => s.ID ,=>是干嘛的呀?指针不是->么?不懂了。。请指教,不胜感激啊
    symbol_bc 2010-09-25
    • 打赏
    • 举报
    回复
    呵呵,那是因为我凑巧今天没啥事!!呵呵
    guoyun911 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 26 楼 symbol_bc 的回复:]
    引用 25 楼 guoyun911 的回复:
    引用 22 楼 symbol_bc 的回复:
    这是一个匿名方法,其实和普通的循环一样,他完全等价于:

    C# code

    for (int i = 0; i < this.departList.Count; i++)
    {
    Department p = this.GetParent(this.departList[i]);
    ……
    [/Quote]

    不好意思,我今天写代码写傻了!我找到问题了,继续整理Ing,谢谢回复,还有,我见你回复的很及时,请问你是用什么工具能够即时看到回帖信息?
    symbol_bc 2010-09-25
    • 打赏
    • 举报
    回复
    [Quote=引用 25 楼 guoyun911 的回复:]
    引用 22 楼 symbol_bc 的回复:
    这是一个匿名方法,其实和普通的循环一样,他完全等价于:

    C# code

    for (int i = 0; i < this.departList.Count; i++)
    {
    Department p = this.GetParent(this.departList[i]);

    ……


    这段代码没有递归啊!
    [/Quote]

    谁也没说这是递归啊!这是设置每个node节点的depth深度,递归在方法GenereateTree()中
    加载更多回复(12)
    内容概要:本文系统研究了基于豪猪优化算法(CPO)的多无人机协同集群在三维空间的避障路径规划问题,聚焦于实现以最低成本为目标的航迹优化,综合考虑路径长度、飞行高度、威胁规避及转弯角度等多个关键因素。通过构建精细化的三维环境模型与多无人机协同机制,采用Matlab平台实现CPO算法的仿真与验证,充分展示了该算法在复杂动态障碍环境下的高效搜索能力与全局优化性能。研究不仅涵盖了路径规划的数学建模与目标函数设计,还深入探讨了算法的收敛特性与鲁棒性,为智能群体系统在实际场景的应用提供了理论依据与技术支撑。; 适合人群:具备一定编程基础和优化算法背景,从事无人机系统控制、智能路径规划、群体协同、人工智能与自动化等相关领域的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于多无人机协同执行侦察、灾害监测、应急救援、区域巡检等复杂任务的自主路径规划;②为智能优化算法在三维动态环境下的路径决策问题提供可复现的技术范例;③支持研究人员对CPO算法与其他主流群智能算法(如PSO、GWO、WOA等)进行性能对比与改进研究,推动路径规划技术的发展。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点理解目标函数的多维度建模方式与CPO算法的迭代优化流程,可通过调整环境参数与约束条件进行仿真实验,对比不同算法在相同场景下的路径质量与收敛速度,从而深入掌握其优势与适用边界。
    内容概要:本文围绕电动汽车参与电力系统运行备用的能力评估展开深入研究,利用Matlab代码实现对电动汽车集群提供运行备用服务的建模与仿真分析。研究重点在于量化电动汽车作为分布式灵活资源参与电网辅助服务的潜力,通过构建精细化的数学模型,分析其可调功率容量、响应速度、时空分布特性及聚合能力,并采用多面体聚合、内近似模型与闵可夫斯基和等先进方法精确刻画其可调度能力边界。研究进一步结合大规模电动汽车接入场景,探讨其在多时间尺度调度框架下参与调峰、调频等辅助服务的优化策略,评估其对提升高比例可再生能源电网灵活性与稳定性的贡献,最终通过仿真验证所提模型与方法的有效性与实用性。; 适合人群:具备电力系统分析、智能电网、新能源汽车或优化调度等相关专业背景,熟悉Matlab/Simulink仿真工具,从事科研、工程应用的高校研究生、科研人员及电力行业工程师。; 使用场景及目标:①精确评估大规模电动汽车集群在不同约束条件下可提供的运行备用容量;②研究电动汽车在日前、日内及实时调度的动态响应能力与优化调度策略;③为高渗透率新能源电力系统提供基于移动储能的灵活性资源解决方案,支撑电网安全经济运行。; 阅读建议:建议结合Matlab代码与技术文档同步学习,重点关注多面体聚合建模、能力边界计算及优化调度算法的设计与实现,可进一步拓展至V2G(车辆到电网)、需响应等互动场景进行二次开发与应用验证。
    打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 OpenCV(开源计算机视觉库)的DNN(Deep Neural Network)模块是一种功能强大的工具,其目的是用于深度学习模型的操作。该模块使得开发人员能够在OpenCV环境直接运用已经训练好的深度学习网络,以执行图像识别、目标检测、图像分割等多种功能。DNN模块能够兼容多种深度学习框架的模型,包括TensorFlow、Caffe、ONNX等。 一、DNN模块概述 OpenCV的DNN模块是为了简化深度学习模型的集成过程而专门设计的,它允许开发人员加载预先训练好的神经网络模型,并在图像数据上执行前向传播操作。借助这个模块,用户可以选用GPU或者CPU来提升计算效率,从而构建出高效的应用程序。 二、目标检测案例 在OpenCV的DNN模块,目标检测是一个常见的应用情形。例如,可以选用SSD(Single Shot Multibox Detector)、YOLO(You Only Look Once)或者 Faster R-CNN 等模型进行实时的目标检测。这些模型能够识别并定位图像的多个对象,并返回每个对象的类别和边界框坐标。 三、模型转换:PB到PBTXT 在OpenCV运用TensorFlow模型时,通常需要处理的是`.pb`格式的模型文件,这是TensorFlow的二进制模型文件格式。然而,为了能够读取模型的结构信息,我们需要`.pbtxt`格式的文本文件。转换过程涉及解析`.pb`文件并将其结构信息导出为`.pbtxt`格式,这样做可以让人清晰地了解网络层和参数的配置。在OpenCV,可以使用`tf.train.write_graph()`函数将.pb...

    111,129

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    .NET技术 C#
    社区管理员
    • C#
    • Creator Browser
    • by_封爱
    加入社区
    • 近7日
    • 近30日
    • 至今
    社区公告

    让您成为最强悍的C#开发者

    试试用AI创作助手写篇文章吧