c#递归算法c#递归算法
网上的无限级分类树已经被实现无数遍了,但是大部分都不是很爽,而且php的居多,实际情况需要,还是自己写一个比较好,算法弱啊,得好好练练基础算法了。
C#递归实现无限级分类代码如下:
/// <summary>
/// 获取分类树
/// </summary>
/// <param name="catelisttree">生成后的树</param>
/// <param name="parentid">父类id</param>
/// <param name="depth">递归深度</param>
/// <returns></returns>
public static List<InfoCate> GetCateListTree(List<InfoCate> catelisttree, int parentid = 0, int depth = 0)
{
//获取所有分类,此处由于递归会调用好几次,在实际使用中用单例去实现,放内存里去。
var catelist = DatabaseProvider.InstancePost.GetCateList().FindAll(c => c.ParentId == parentid);
//显示树的层次标识符
var treechar = " └ ";
//循环读取取出的所有分类
foreach (var infoCate in catelist)
{
//定义一个树枝
var branch = string.Empty;
//第一次递归不处理,以后逐层的增加树枝
if (depth > 0)
{
//通过padleft实现根据深度来自增树枝
branch = (treechar).PadLeft(depth, ' ');
}
//重新赋值增加树枝后的新的分类名称
infoCate.CateName = branch + infoCate.CateName;
//把遍历后的分类添加到目标树中
catelisttree.Add(infoCate);
//递归操作
GetCateListTree(catelisttree,infoCate.CateId, depth + 1);
}
//返回树供下一次递归使用
return catelisttree;
}
调用代码如下:
[TestMethod]
public void TestCategoryTree()
{
var catelisttree=new List<InfoCate>();
var catelist = GetCateListTree(catelisttree);
foreach (var infoCate in catelist)
{
Console.WriteLine(infoCate.CateName);
}
}
递归算法(1286)
lucene.net已经从孵化器毕业(1611)
调试WebService时,显示:无法自动进入并单步执行服务器(5425)
webservice上传图片的问题(2379)
mvc3 CheckBoxList扩展(4255)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27341-1.html
没有发财的
它仍然会嬉皮笑脸的试探
泻作屎
么么哒哈哈