今天遇到一个求树形结构中所有节点的值求合的问题,TreeList自身提供了类似的功能,可是它的表现形式并不是我想要的,我需要将子结点的合放在父节点的值中。折腾了几下。还弄不出来,我是不喜欢接受人家东西的人。除非是自己实现不了。那是能力问题,自己想了一下。有些头绪,干脆自己来写个过程实现算了。刚开始想着用递归。说来惭愧。学编程这么久。对这个东西还是模模糊糊的印象。搞了两下。竟然不行。上网一问大虾们。被骂个半死。偶是菜鸟中的菜鸟,连二叉树的问题都搞不定。说的我当时就想去跳楼。没有办法。能力有限啊。最后想到了将树形数据转化为线型数据来处理,这样子就发挥了搜索和排序的威力。最后用Hashtable实现。到于线型数据,我用到了TreeListOperation中的Execute过程来将所有的节点加到一个Hashtable中。转换过程代码如下:
 1TreeList使用扎记(3)using System;
 2TreeList使用扎记(3)using System.Collections ;
 3TreeList使用扎记(3)using DevExpress.XtraTreeList;
 4TreeList使用扎记(3)using DevExpress.XtraTreeList.Columns ;
 5TreeList使用扎记(3)using DevExpress.XtraTreeList.Nodes ;
 6TreeList使用扎记(3)using DevExpress.XtraTreeList.Nodes.Operations ;
 7TreeList使用扎记(3)namespace NskProject
 8
其中存入到Hashtable中的Struct是这样的:
//对树形数据求和用到数据结构
 public struct TreeSumData
 {
  public int Level;//深度
  public double Value;//值
  public int ParentID;//父节点ID
  public int ID;//自身ID
  public bool IsParent;//是否为父节点
 }
当得到一个线型的数据列表和该树形数据集合的最大深度后,我们就可以正式开始进行计算了。菜鸟我不会二叉树。也不会什么算法。就只好一层一层的算了。中间有大量的拆箱和装箱操作,在2005下采用List泛型实现效率应该会高一些。
  1TreeList使用扎记(3)using System;
  2TreeList使用扎记(3)using System.Collections ;
  3TreeList使用扎记(3)
  4TreeList使用扎记(3)namespace NskProject
  5

相关文章:

  • 2021-11-02
  • 2021-06-29
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
猜你喜欢
  • 2021-10-05
  • 2021-05-20
  • 2021-06-11
  • 2022-02-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案