【发布时间】:2014-12-12 10:25:01
【问题描述】:
我有一个BinaryTree 类和一个用于保存节点的BinaryTreeNode,我已经制作了树并为其编写了 pre-order、postorder 和 in-order 方法。
但我不知道如何为它写IEnumerator<T>(我只想对GetEnumerator() 方法使用in-order)。
问题是inOrder 方法的返回类型是void。我想让它IEnumerator<T> 而不是MessageBox 返回数据。
我该怎么做?
public void PreOrder(BinaryTreeNode<T> node)
{
if (node != null)
{
MessageBox.Show(node.Value.ToString());
PreOrder(node.Left);
PreOrder(node.Right);
}
}
public void PostOrder(BinaryTreeNode<T> node)
{
if (node != null)
{
PostOrder(node.Left);
PostOrder(node.Right);
MessageBox.Show(node.Value.ToString());
}
}
public void InOrder(BinaryTreeNode<T> node)
{
if (node != null)
{
InOrder(node.Left);
MessageBox.Show(node.Value.ToString());
InOrder(node.Right);
}
}
public void Clear()
{
root = null;
Count = 0;
}
public IEnumerator<T> GetEnumerator()
{
InOrder(root);
return null; // error in forerach loop
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
我认为我的这部分代码已经足够了。
这就是我定义BinaryTree 类的方式:
public class BinaryTree<T> : IEnumerable<T> where T : IComparable<T>
这就是我定义BinaryTreeNode的方式:
public class BinaryTreeNode<T> : IComparable<T> where T : IComparable<T>
【问题讨论】:
标签: c# algorithm generics data-structures binary-search-tree