在软件开发中经常用到树形的数据结构(如:物品分类),一般数据库设计人员都采用三列(id,upid,name)表存储数据,对于大型的树,如何把从数据库中读出的数据快速构建成内存中的树型类(如:TreeNode 关系),一定要仔细考虑算法的设计以提高效率。
本文在.net 2.0环境下使用 C#语言, 用单次循环加一递归过程实现了快速构建TreeNode关系。
代码如下:
/// <summary>
/// 从数据库中读出分类数据并构建TreeNode树
/// </summary>
/// <returns>根TreeNode实例</returns>
public static TreeNode GetFenLeiTree()
{
SortedDictionary<string, TreeNode> flList = GetTreeNodeList();
SortedDictionary<string, TreeNode> AddedList = new SortedDictionary<string, TreeNode>();
TreeNode rootNode = new TreeNode(MyConfig.FenLeiRootName);
rootNode.Name = "-1";
foreach (TreeNode fli in flList.Values)
{