首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C#中将树的所有叶子添加到列表中

在C#中将树的所有叶子添加到列表中,可以通过递归遍历树的节点来实现。以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Collections.Generic;

public class TreeNode
{
    public int Value { get; set; }
    public List<TreeNode> Children { get; set; }

    public TreeNode(int value)
    {
        Value = value;
        Children = new List<TreeNode>();
    }
}

public class TreeLeafCollector
{
    public List<int> CollectLeaves(TreeNode root)
    {
        List<int> leaves = new List<int>();
        CollectLeavesHelper(root, leaves);
        return leaves;
    }

    private void CollectLeavesHelper(TreeNode node, List<int> leaves)
    {
        if (node.Children.Count == 0)
        {
            leaves.Add(node.Value);
        }
        else
        {
            foreach (var child in node.Children)
            {
                CollectLeavesHelper(child, leaves);
            }
        }
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        // 构建一个树的示例
        TreeNode root = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        TreeNode node5 = new TreeNode(5);
        TreeNode node6 = new TreeNode(6);

        root.Children.Add(node2);
        root.Children.Add(node3);
        node2.Children.Add(node4);
        node2.Children.Add(node5);
        node3.Children.Add(node6);

        // 收集树的叶子节点
        TreeLeafCollector collector = new TreeLeafCollector();
        List<int> leaves = collector.CollectLeaves(root);

        // 打印叶子节点
        foreach (var leaf in leaves)
        {
            Console.WriteLine(leaf);
        }
    }
}

上述代码中,我们定义了一个TreeNode类表示树的节点,其中包含一个值属性Value和一个子节点列表属性Children。然后,我们定义了一个TreeLeafCollector类,其中包含一个CollectLeaves方法,用于收集树的叶子节点。该方法通过递归遍历树的节点,将叶子节点的值添加到列表中。

Main方法中,我们构建了一个树的示例,并使用TreeLeafCollector类收集树的叶子节点。最后,我们打印出叶子节点的值。

这个问题中没有提到具体的云计算相关内容,因此不需要提供腾讯云相关产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券