-
Notifications
You must be signed in to change notification settings - Fork 0
/
node.cs
147 lines (134 loc) · 3.57 KB
/
node.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace stackApp
{
class node
{
private string name;
private int layerNum;
private object content;
private List<node> childs;
private node parent;
/// <summary>
/// 创建一个节点
/// </summary>
/// <param name="name">节点名</param>
public node(string name)
{
this.name = name;
layerNum = -1;
childs = new List<node>();
}
/// <summary>
/// 重命名节点
/// </summary>
/// <param name="name">节点名</param>
public void resetName(string name)
{
this.name = name;
}
public string readName()
{
return name;
}
/// <summary>
/// 设置节点所在层数
/// </summary>
/// <param name="layerNum">层数</param>
public void setLayerNum(int layerNum)
{
this.layerNum = layerNum;
}
/// <summary>
/// 设置父节点
/// </summary>
/// <param name="parent">父节点</param>
public void setParent(node parent)
{
this.parent = parent;
}
/// <summary>
/// 获取父节点
/// </summary>
/// <returns>父节点</returns>
public node getParent()
{
return parent;
}
/// <summary>
/// 读取节点所在层数
/// </summary>
/// <returns>层数</returns>
public int readLayerNum()
{
return layerNum;
}
/// <summary>
/// 向节点添加内容
/// </summary>
/// <param name="content">内容类</param>
public void addContent(object content)
{
this.content = content;
}
/// <summary>
/// 向节点添加子节点
/// </summary>
/// <param name="child">子节点</param>
/// <returns>重复状态</returns>
public int addChildNode(node child)
{
if (childs.Contains(child))
{
return -1;
}
else
{
this.childs.Add(child);
return 0;
}
}
/// <summary>
/// 从节点删除子节点
/// </summary>
/// <param name="child">子节点</param>
public void removeChildNode(node child)
{
this.childs.Remove(child);
}
/// <summary>
/// 获取所有子节点
/// </summary>
/// <returns>所有子节点</returns>
public List<node> getChildNode()
{
return childs;
}
/// <summary>
/// 删除这个节点下的所有子节点
/// 从树表中删除这个节点及其子节点
/// </summary>
/// <param name="tree">树</param>
public void delete(tree tree)
{
tree.deleteNodeInTreeList(this);
//从树表中将自己删除
foreach (node child in childs)
{
child.delete(tree);
}
//调用子节点的删除方法
for (int i = 0; i < childs.Count; i++)
{
childs[i] = null;
}
//释放所有子节点的实例
childs.Clear();
//从表中删除所有子节点
}
}
}