Generic TreeNode

image_pdfimage_print
   
 




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"));
    }
}


            


This entry was posted in Generics. Bookmark the permalink.