在C#中,遍歷TreeNode
樹通常涉及到深度優先搜索(DFS)或廣度優先搜索(BFS)。以下是使用這兩種方法遍歷樹的示例:
使用遞歸實現DFS:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
public class TreeTraversal
{
public static void Main()
{
// 創建一個示例樹
TreeNode root = new TreeNode("Root");
TreeNode child1 = new TreeNode("Child1");
TreeNode child2 = new TreeNode("Child2");
TreeNode grandChild = new TreeNode("GrandChild");
root.Nodes.Add(child1);
root.Nodes.Add(child2);
child1.Nodes.Add(grandChild);
// 使用DFS遍歷樹
DFS(root);
}
public static void DFS(TreeNode node)
{
if (node == null) return;
Console.Write(node.Text + " ");
foreach (TreeNode child in node.Nodes)
{
DFS(child);
}
}
}
使用隊列實現BFS:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
public class TreeTraversal
{
public static void Main()
{
// 創建一個示例樹
TreeNode root = new TreeNode("Root");
TreeNode child1 = new TreeNode("Child1");
TreeNode child2 = new TreeNode("Child2");
TreeNode grandChild = new TreeNode("GrandChild");
root.Nodes.Add(child1);
root.Nodes.Add(child2);
child1.Nodes.Add(grandChild);
// 使用BFS遍歷樹
BFS(root);
}
public static void BFS(TreeNode node)
{
if (node == null) return;
Queue<TreeNode> queue = new Queue<TreeNode>();
queue.Enqueue(node);
while (queue.Count > 0)
{
TreeNode currentNode = queue.Dequeue();
Console.Write(currentNode.Text + " ");
foreach (TreeNode child in currentNode.Nodes)
{
queue.Enqueue(child);
}
}
}
}
在這兩個示例中,我們分別創建了一個簡單的樹結構,并使用DFS和BFS方法遍歷了樹的節點。你可以根據需要修改這些示例以適應你的具體需求。