8
餘米嘗試使用收益率的回報,它返回一個IEnumerable二叉搜索樹遍歷 - 預購
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爲空,則拋出空異常。我認爲在這一點上我需要減產;
我認爲,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);
}
}
謝謝。
參見:HTTP://計算器。 COM /問題/ 1043050/C-性能的嵌套屈服我n-a-tree – 2011-06-04 03:08:05
這將停止在沒有進一步穿越的兒童。 – user7116 2011-06-04 03:31:48
@ user177883 - 您的原始問題沒有提及遞歸選項不可接受。我用非遞歸方法更新了答案。 – 2011-06-04 04:01:34