대기열을 사용하여 트리에서 모든 리프 노드를 탐색하려고합니다. 하지만 출력을 얻을 수 없습니다.트리에서 모든 리프 노드를 통과 함 C#
class MyNode<T>
{
public T Data { get; set; }
public MyNode<T> Parent { get; set; }
public List<MyNode<T>> Children = new List<MyNode<T>>();
public MyNode(T data, MyNode<T> parent)
{
Data = data;
Parent = parent;
}
public override string ToString()
{
if (Children == null) return Data.ToString();
return string.Format("{0} {1} ", Data.ToString(), Children.ToString());
}
}
노드는 임의의 수의 자식을 가질 수 있습니다. 그리고 여기에 모든 잎 노드를 출력하기 위해 작성한 내용이 있습니다. 나는 아무것도 얻을 수 없다. 나는 마지막 줄만 생각한다. Console.WriteLine (""); 나는 처형되었지만 왜 그럴 수 없는지.
public static void PrintSentence(MyNode<string> root)
{
if (root == null) // Return when the tree is empty.
return;
Queue<MyNode<string>> nodeQueue = new Queue<MyNode<string>>();
nodeQueue.Enqueue(root);
MyNode<string> currentNode = root;
while (nodeQueue.Count != 0)
{
currentNode = nodeQueue.Peek();
nodeQueue.Dequeue();
if (currentNode.Children == null) // Print strings only when the current node is a leaf node.
Console.Write(currentNode.Data + " ");
for (int i = 0; i < currentNode.Children.Count(); i++)
nodeQueue.Enqueue(currentNode.Children[i]);
}
Console.WriteLine("");
}
도움 주셔서 감사합니다. 트리 클래스는 사실, 어디서나 디버그 윈도우를 찾을 수 없습니다. 나는 PrintSentence 메소드 만 작성했고, 다른 것들은 다른 누군가가 작성했습니다.
class Tree<T>
{
public MyNode<T> Root { get; set; }
public Tree(MyNode<T> root) { Root = root; }
public override string ToString()
{
if (Root == null) return "";
return Root.ToString();
}
}
당신이 더 많은 정보를 제공하시기 바랍니다 수 - 특히 당신의 나무에? 또한 디버거에서 코드를 실행하여 어떤 코드가 실행되고 어떤 코드가 실행되지 않습니까? –