c# - 递归打印树

标签 c# list data-structures tree

我希望用 C# 打印(到 List> 树叶的每个路径(最好是递归地)

如果是树:

               A
         B           C
      D  E  F       G  H
    I

我希望得到的结果是叶子列表的列表(A是叶子,ABDI是叶子列表):

ABDI
ABE
ABF
ACG
ACH

我尝试了不同的循环,例如 foreach,但我不知道何时打印以获取整个路径。

最佳答案

您需要使用depth-first traversal

解决方案是:

public class Node {
    public List<Node> Children {get;set;}
    public string Label {get;set;}
}

public static void Print(Node node, string result)
{                        
    if (node.Children == null || node.Children.Count == 0)
    {
        Console.WriteLine(result);
        return;
    }
    foreach(var child in node.Children)
    {
        Print(child, result + child.Label);
    }
}

这样调用它:

Print(root, root.Label);

关于c# - 递归打印树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19515798/

相关文章:

c# - 如何摆脱 app.config 并将其全部移至代码中?

c++ - 如何初始化 <list> 中的对象并在 C++ 中迭代它们?它们是随机存储的吗?

java - 获取 Java 列表中的下一个时间

java - 如何在 map 中存储多个值(在运行时)并再次获取单个值

algorithm - 为什么这不能递归工作?

c++ - 获取结构中元素的数量

javascript - 在嵌套对象数组中查找父对象。如何?

c# - 打开 XML SDK : get "Unreadable content" error when trying to populate more than 25 columns

c# - 将抽象 C++ 结构返回到 C#

c# - 处理服务总线 Message.Complete() 异常