C# 树形递归算法

如果数据库中存在的department部门表,其中ID为主键,PID为父类,Name为部门名称,设计如下:

[csharp] view plain copy

  1. public class department  
  2. {  
  3.     public int ID { get; set; }  
  4.     public int PID { get; set; }  
  5.     public string Name { get; set; }  
  6. }  

设计递归算法:

[csharp] view plain copy

  1. private string departmentRecursion(int pid, List obj)  
  2. {  
  3.     string a = "";  
  4.     for (int i = 0; i < obj.Count; i++)  
  5.     {  
  6.         if (obj[i].PID == pid)  
  7.         {  
  8.             a += "" + obj[i].Name + "\n
    " + departmentRecursion(obj[i].ID, obj) + "
    ";  
  9.         }  
  10.     }  
  11.     a += "";  
  12.     return a;  
  13. }  

在MVC中新建立Home控制器:加入下面代码:DeparTmentList查询出部门表信息到List中,这里准备了测试数据,使用递归返回树状html字符串:

[csharp] view plain copy

  1. public ActionResult Index()  
  2. {  
  3.     return View();  
  4. }  
  5.   
  6. public ActionResult DeparTmentList()  
  7. {  
  8.     List ds = new List()  
  9.     {  
  10.         new department(){ ID=6, Name="前端开发组1", PID=4},  
  11.         new department(){ ID=1, Name="XX公司", PID=0},  
  12.         new department(){ ID=2, Name="开发部", PID=1},  
  13.         new department(){ ID=3, Name=".NET开发部门", PID=2},  
  14.         new department(){ ID=5, Name=".NET开发组1", PID=3},  
  15.         new department(){ ID=4, Name="前端开发部门", PID=2},  
  16.         new department(){ ID=6, Name=".NET开发组2", PID=3},  
  17.     };  
  18.     return Content(departmentRecursion(0, ds));  
  19. }  

添加Home视图:

[csharp] view plain copy

  1. @{  
  2.     Layout = null;  
  3. }  
  4.   
  5.   
  6.   
  7.   
  8.   
  9.       
  10.     Index  
  11.   
  12.   
  13.     @Html.Action("DeparTmentList", "Home");       
  14.   
  15.   

调试运行如下:

C# 树形递归算法_第1张图片

使用JS树形递归,部门树状图:

[javascript] view plain copy

  1.   

C# 树形递归算法_第2张图片

你可能感兴趣的:(c#,后台程序)