我遇到了以下实现二叉树的代码。为了促进foreach,IEnumerable
已实施。这是使foreach工作的最简单方法吗?我不明白为什么需要两个GetEnumerator()
函数。
public class BinaryTree<T> : IEnumerable<T>
{
..
public IEnumerator<T> InOrderTraversal()
{
...
yield return curr.Value;
...
}
public IEnumerator<T> GetEnumerator()
{
return InOrderTraversal();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
答案 0 :(得分:3)
一个返回IEnumerator<T>
其他返回IEnumerator
。这样,在.NET中引入泛型之前编写的遗留代码仍可以使用此数据结构。