【发布时间】:2011-09-08 05:25:32
【问题描述】:
我正在尝试使用返回 IEnumerable 的 yield return 来实现 Tree Traversal PreOrder
private IEnumerable<T> Preorder(Node<T> node)
{
while(node != null)
{
yield return node.Data;
yield return node.LeftChild.Data;
yield return node.RightChild.Data;
}
}
在这种情况下,它进入无限循环,是的,我知道我需要继续遍历。如何做到这一点?
如果 LeftChild 或 RightChild 为 null,则抛出 null 异常。我认为那时我需要让步;
我想,inorder 和 postorder 也很相似,有什么想法吗?
我有 Resursive 版本,效果很好。
public void PreOrderTraversal(Node<T> node)
{
if(node!=null)
{
Console.Write(node.Data);
}
if (node.LeftChild != null)
{
PreOrderTraversal(node.LeftChild);
}
if (node.RightChild != null)
{
PreOrderTraversal(node.RightChild);
}
}
谢谢。
【问题讨论】:
标签: c# .net algorithm tree binary-search-tree