/// <summary>
/// 二叉树的应用
/// </summary>
/// <typeparam name="T"></typeparam>
public class Node<T>
{
public T m_Item;
public Node<T> m_LeftNode;
public Node<T> m_RightNode;
public Node(T item,Node<T> leftNode,Node<T> rightNode)
{
this.m_Item = item;
this.m_LeftNode = leftNode;
this.m_RightNode = rightNode;
}
}
public class Tree<T>
{
Node<T> root;
public Tree(Node<T> root)
{
this.root = root;
}
public IEnumerable<T> GetEnum
{
get
{
return DisplayTree(root);
}
}
public IEnumerable<T> DisplayTree(Node<T> root)
{
//遍历左子树
if (root.m_LeftNode != null)
foreach (T item in DisplayTree(root.m_LeftNode))
yield return item;
//遍历根节点
yield return root.m_Item;
//遍历右子树
if (root.m_RightNode != null)
foreach (T item in DisplayTree(root.m_RightNode))
yield return item;
}
}
public class CreateTree
{
public Tree<string> tree;
public CreateTree()
{
tree = new Tree<string>(new Node<string>("A",
new Node<string>("B", null, null),
new Node<string>("C",
new Node<string>("D", null, null),
new Node<string>("E", null, null))));
}
public void Display()
{
foreach (string s in tree.GetEnum)
Console.WriteLine(s);
}
}