using System; using System.Collections.Generic; using System.Text; using System.Collections; public class Employee { private int _id = 0; private string _name = null; public Employee(int id, string name) { this._id = id; this._name = name; } public int Id { get { return this._id; } } public string Name { get { return this._name; } } public override string ToString() { return this._name; } } public class TreeNode<T> { private T _nodeData; private ArrayList _childNodes; public TreeNode(T nodeData) { this._nodeData = nodeData; this._childNodes = new ArrayList(); } public T Data { get { return this._nodeData; } } public TreeNode<T>[] Children { get { return (TreeNode<T>[])this._childNodes.ToArray(typeof(TreeNode<T>)); } } public TreeNode<T> this[int index] { get { return (TreeNode<T>)this._childNodes[index]; } } public TreeNode<T> AddChild(T nodeData) { TreeNode<T> newNode = new TreeNode<T>(nodeData); this._childNodes.Add(newNode); return newNode; } public override string ToString() { return this._nodeData.ToString(); } } class Program { static void Main(string[] args) { TreeNode<Employee> rootNode = new TreeNode<Employee>(new Employee(111, "H")); TreeNode<Employee> child1 = rootNode.AddChild(new Employee(222, "B")); rootNode.AddChild(new Employee(333, "T")); child1.AddChild(new Employee(444, "B")); child1.AddChild(new Employee(555, "M")); } }