BoTree.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace MES.Production.Entity.ResponseMod.phone
  7. {
  8. /// <summary>
  9. ///
  10. /// </summary>
  11. /// <typeparam name="T"></typeparam>
  12. public class BoTree<T>
  13. {
  14. public BoTree()
  15. {
  16. nodes = new List<BoTree<T>>();
  17. }
  18. public BoTree(T data)
  19. {
  20. this.Data = data;
  21. nodes = new List<BoTree<T>>();
  22. }
  23. private BoTree<T> parent;
  24. /// <summary>
  25. /// 父结点
  26. /// </summary>
  27. private BoTree<T> Parent
  28. {
  29. get { return parent; }
  30. }
  31. /// <summary>
  32. /// 结点数据
  33. /// </summary>
  34. public T Data { get; set; }
  35. private List<BoTree<T>> nodes;
  36. /// <summary>
  37. /// 子结点
  38. /// </summary>
  39. public List<BoTree<T>> Nodes
  40. {
  41. get { return nodes; }
  42. }
  43. /// <summary>
  44. /// 添加结点
  45. /// </summary>
  46. /// <param name="node">结点</param>
  47. public void AddNode(BoTree<T> node)
  48. {
  49. if (!nodes.Contains(node))
  50. {
  51. node.parent = this;
  52. nodes.Add(node);
  53. }
  54. }
  55. /// <summary>
  56. /// 添加结点
  57. /// </summary>
  58. /// <param name="nodes">结点集合</param>
  59. public void AddNodes(List<BoTree<T>> nodes)
  60. {
  61. foreach (var node in nodes)
  62. {
  63. if (!nodes.Contains(node))
  64. {
  65. node.parent = this;
  66. nodes.Add(node);
  67. }
  68. }
  69. }
  70. /// <summary>
  71. /// 移除结点
  72. /// </summary>
  73. /// <param name="node"></param>
  74. public void Remove(BoTree<T> node)
  75. {
  76. if (nodes.Contains(node))
  77. nodes.Remove(node);
  78. }
  79. /// <summary>
  80. /// 清空结点集合
  81. /// </summary>
  82. public void RemoveAll()
  83. {
  84. nodes.Clear();
  85. }
  86. }
  87. }