C# 树节点堆栈深度优先搜索
我看到了这个主题:没有堆栈的深度优先搜索[关闭]。我有一个关于这个功能的问题。我想用stack。 因为我是C#初学者,不知道是否有人能详细地向我解释1)下面的程序目标是什么,2)预期的输出是什么C# 树节点堆栈深度优先搜索,c#,C#,我看到了这个主题:没有堆栈的深度优先搜索[关闭]。我有一个关于这个功能的问题。我想用stack。 因为我是C#初学者,不知道是否有人能详细地向我解释1)下面的程序目标是什么,2)预期的输出是什么 void Foo(TreeNode root) { Stack nodes = new Stack(); nodes.Push(root); while (nodes.Count > 0) { TreeNode node = (TreeNode)
void Foo(TreeNode root)
{
Stack nodes = new Stack();
nodes.Push(root);
while (nodes.Count > 0)
{
TreeNode node = (TreeNode) nodes.Pop();
Console.WriteLine(node.Text);
for (int i = node.Nodes.Count - 1; i >= 0; i--)
nodes.Push(node.Nodes[i]);
}
}
试试看
Foo(new TreeNode()
{
Text = "test",
Nodes = new List<TreeNode>()
{
new TreeNode(){Text = "a"},
new TreeNode(){
Text = "b",
Nodes = new List<TreeNode>()
{
new TreeNode(){Text = "c"},
new TreeNode(){Text = "d"},
}
},
}
} );
基本上,循环中的每次行程都会获取堆栈中的第一项,并将其子项(如果有的话)添加到堆栈中。然后它再次获取循环
我是一名C#初学者,不知道是否有人能向我详细解释1)以下程序目标是什么,2)预期输出是什么
我认为重要的是首先理解整体概念,而不是特定编程语言的实现。因此,简言之:深度优先搜索的目标是“深入”遍历一棵树或一个图,检查一些适用于节点的条件(通常目标是找到具有特定键的节点)。这种遍历方式由堆栈数据结构实现 目标是获得预期的输出,所以这只是一个问题。我认为最好的方法是创建不同的树,并在代码中运行它们来找到答案。看一下预购的图片,非常感谢大家。我现在明白了
test
a
b
c
d