输出:
4
A K M
B F H L N O
C D G I P
E J
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

python解法

具体步骤如下:

输入处理:

输入的字符串通过逗号分隔,每个评论后面紧跟着一个数字,表示该评论的子评论数量。
例如输入 “A,2,B,0,C,1,D,0” 表示:
A 有 2 个子评论:B 和 C。
B 没有子评论。
C 有 1 个子评论:D。
D 没有子评论。
树的构建:

使用 tree 列表存储每一层的评论,tree[0] 为第一层评论,tree[1] 为第二层评论,以此类推。
使用 queue 队列来依次处理评论和子评论数量。
递归函数 recursive() 处理子评论,逐层递归构建树。
结果输出:

最终输出树的层数以及每一层的评论内容

def get_result(comments):
    tree = []  # 用于存储树的层级结构,每一层是一个列表
    queue = comments.split(",")  # 将输入的字符串按逗号分割,形成队列
    level = 1  # 初始化层级,从1开始

    # 处理队列中的评论
    while queue:
        comment = queue.pop(0)  # 取出当前评论

        if len(tree) < level:
            tree.append([])  # 如果当前层级不存在,初始化该层

        tree[0].append(comment)  # 将第一个评论加入第一层

        child_count = int(queue.pop(0))  # 取出当前评论的子评论数量

        # 递归处理子评论
        recursive(queue, level + 1, child_count, tree)

    print(len(tree))  # 输出树的层数
    for level_nodes in tree:
        print(" ".join(level_nodes))  # 输出每一层的评论内容


def recursive(queue, level, child_count, tree):
    """
    递归处理子评论
    :param queue: 剩余的评论队列
    :param level: 当前处理的层级
    :param child_count: 当前评论的子评论数量
    :param tree: 树的结构,按层级存储评论
    """
    for _ in range(child_count):
        comment = queue.pop(0)  # 取出子评论

        if len(tree) < level:
            tree.append([])  # 如果当前层级不存在,初始化该层

        tree[level - 1].append(comment)  # 将子评论加入对应的层级

        count = int(queue.pop(0))  # 取出当前子评论的子评论数量

        if count > 0:
            recursive(queue, level + 1, count, tree)  # 如果子评论还有子评论,继续递归


if __name__ == "__main__":
    comments = input()  # 输入评论字符串
    get_result(comments)

 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

java解法

核心思路:

输入格式:

输入是一串由逗号分隔的字符串,奇数位置表示评论内容,偶数位置表示该评论的子评论数量。
例如输入:“A,2,B,0,C,1,D,0” 表示:
A 有 2 个子评论:B 和 C。
B 没有子评论。
C 有 1 个子评论:D。
D 没有子评论。
树的构建:

使用 List 数据结构表示树的层级,每一层是一个 List。
使用 Queue 处理输入数据,逐个解析评论及其子评论数量。
递归方法 buildTree 负责构建树的层级结构。
输出结果:

输出树的层数(即层级数)。
依次输出每一层的评论内容。

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String data = scanner.nextLine();  // 从控制台读取输入数据
        scanner.close();

        List<List<String>> tree = processComments(data);  // 处理输入数据,构建树结构
        outputResult(tree);  // 输出结果
    }

    /**
     * 处理输入的评论数据,构建树的层级结构
     * 
     * @param data 输入的字符串,包含评论和子评论数量
     * @return 树的层级结构,每一层是一个字符串列表
     */
    public static List<List<String>> processComments(String data) {
        List<List<String>> tree = new ArrayList<>();  // 存储树的层级结构
        Queue<String> queue = new LinkedList<>();  // 用于处理输入的队列

        // 将输入字符串按逗号分割,加入队列
        for (String part : data.split(",")) {
            queue.add(part);
        }

        // 当队列不为空时,继续构建树
        while (!queue.isEmpty()) {
            buildTree(queue, 1, tree);  // 从第1层开始构建
        }

        return tree;
    }

    /**
     * 递归构建树的层级结构
     * 
     * @param queue 输入数据的队列
     * @param level 当前处理的层级
     * @param tree 树的层级结构
     */
    private static void buildTree(Queue<String> queue, int level, List<List<String>> tree) {
        // 如果当前层级在树中不存在,初始化该层
        if (tree.size() < level) {
            tree.add(new ArrayList<>());
        }

        String comment = queue.poll();  // 取出当前评论
        tree.get(level - 1).add(comment);  // 将评论添加到对应层级

        int childrenCount = Integer.parseInt(queue.poll());  // 获取子评论数量

        // 递归处理子评论
        for (int i = 0; i < childrenCount; i++) {
            buildTree(queue, level + 1, tree);
        }
    }

    /**
     * 输出树的层级结果
     * 
     * @param tree 树的层级结构
     */
    public static void outputResult(List<List<String>> tree) {
        System.out.println(tree.size());  // 输出层数
        for (List<String> levelComments : tree) {
            System.out.println(String.join(" ", levelComments));  // 输出每层的评论内容
        }
    }
}

 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

C++解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

C解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

JS解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

注意:

如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏

注:本文转载自blog.csdn.net的CodeClimb的文章"https://blog.csdn.net/CodeClimb/article/details/145143507"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!