Я написал 3 метода для моего BST:Как написать GetEnumerator для предварительного заказа, Postorder, обход в порядке?
- PREORDER();
- PostOrder();
- InOrder();
Все они являются рекурсивными методами, и мне нужно напечатать значение внутри метода, но я хочу вернуть значение и распечатать его вне этого метода.
Я написал GetEnumerator() для InOrder, но проблема в том, что мне нужны все методы дерева.
Один из способов - добавить значения в массив и вернуть массив, но это плохо для производительности, потому что мы добавили массив в наш код.
Редактировать: Как я могу получить GetEnumerator для всех моих методов hree?
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);
}
}
GetEnumerator внутри класса BinaryTreeNode.
public IEnumerator<T> GetEnumerator()
{
if (Left != null)
{
foreach (var v in Left)
{
yield return v;
}
}
yield return Value;
if (Right != null)
{
foreach (var v in Right)
{
yield return v;
}
}
}
Можете уточнить, что вы просите. Я пытаюсь найти вопрос. –
Возникает вопрос, как поддерживать несколько перечислений в одной коллекции? –
@AshBurlaczenko Посмотрите на% 00 - Внутренний комментарий об ошибке сервера. –