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
提前祝小爷吴亦凡生日快乐哟