c# 使用递归 循环遍历导航树结构
时间: 2024-09-19 09:05:51 浏览: 27
在C#中,如果你有一个导航树结构(例如文件系统或网站菜单的树状数据模型),你可以使用递归和循环结合的方式来遍历它。递归通常用于深度优先搜索,而循环则适用于广度优先搜索。这里我们以递归为例,演示如何实现前序遍历(先根节点后子节点):
```csharp
public class TreeNode
{
public string Name { get; set; }
public List<TreeNode> Children { get; set; }
public void TraverseRecursively()
{
// 基线条件:如果当前节点为空,则直接返回
if (Children == null || Children.Count == 0)
return;
// 递归步骤:先访问当前节点,再递归遍历所有子节点
Console.WriteLine(Name);
foreach (var child in Children)
child.TraverseRecursively();
}
}
```
在这个例子中,`TraverseRecursively` 方法首先检查当前节点是否有子节点。如果有,它会打印当前节点的名称,然后对每个子节点递归调用 `TraverseRecursively`。
如果你想使用循环实现类似功能,你可以考虑使用堆栈或队列辅助,但这通常更适合广度优先遍历。在C#中,使用 `Queue<TreeNode>` 可以更方便地做广度优先遍历。