📅  最后修改于: 2023-12-03 14:59:41.300000             🧑  作者: Mango
本文将介绍在 C# 中如何以树形结构存储数据,并实现遍历和返回功能。
本文以单向树作为示例,以下是该树的结构:
class TreeNode
{
public int Value { get; set; }
public List<TreeNode> Children { get; set; }
}
每个节点包含一个整数值和一个子节点列表。
向树中添加节点的方法如下:
public void AddNode(TreeNode parent, TreeNode child)
{
parent.Children.Add(child);
}
遍历树的方法有两种:深度优先遍历和广度优先遍历。
深度优先遍历通常使用递归算法实现。以下是以前序遍历方式遍历树的代码:
public void TraversePreOrder(TreeNode node)
{
if(node == null)
{
return;
}
Console.WriteLine(node.Value);
foreach(var child in node.Children)
{
TraversePreOrder(child);
}
}
广度优先遍历使用队列数据结构实现。以下是以层序遍历方式遍历树的代码:
public void TraverseLevelOrder(TreeNode node)
{
Queue<TreeNode> q = new Queue<TreeNode>();
q.Enqueue(node);
while(q.Count > 0)
{
TreeNode current = q.Dequeue();
Console.WriteLine(current.Value);
foreach(var child in current.Children)
{
q.Enqueue(child);
}
}
}
在树中找到一个节点后,需要返回其子树。以下是返回子树的代码:
public TreeNode GetSubTree(TreeNode node)
{
var subTree = new TreeNode()
{
Value = node.Value,
Children = new List<TreeNode>(),
};
foreach(var child in node.Children)
{
subTree.Children.Add(GetSubTree(child));
}
return subTree;
}
本文介绍了在 C# 中如何以树形结构存储数据,并实现遍历和返回子树的功能。希望能对你的编程工作有所帮助。