首页
学习
活动
专区
工具
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类收集树的叶子节点。最后,我们打印出叶子节点的值。

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

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

相关·内容

剑指offer代码解析——面试题25二叉树中和为某一值的路径

题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。PS:从根结点开始,一直到叶子结点形式一条路径。 分析:要找出路径之和为指定整数的路径,就需要遍历二叉树的所有路径。此外,由于路径是指根结点到叶子结点的线段,因此我们想到采用深度优先的方式遍历二叉树。深度优先算法又分为:先序遍历、中序遍历、后序遍历,其中先序遍历符合我们的要求。 首先需要创建一个栈,用来保存当前路径的结点。采用先序遍历算法遍历结点时,先将途中经过的结点均存入栈中,然后判断当前结点是否为叶子结点,若不是叶子结点

05
领券