Java 题解 | #牛群分层排列#

牛群分层排列

https://www.nowcoder.com/practice/7e98027a60424c9ba88d9c4c0506ede4

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @return string字符串一维数组
     */
    public String[] levelOrder (TreeNode root) {
    if (root == null) {
            return new String[0];
        }
        
        List<String> resultList = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        
        while (!queue.isEmpty()) {
            int size = queue.size();
            StringBuilder levelStr = new StringBuilder(); // 用于存储当前层的节点值
            
            for (int i = 0; i < size; i++) {
                TreeNode node = queue.poll();
                levelStr.append(node.val);
                
                if (node.left != null) {
                    queue.offer(node.left);
                }
                
                if (node.right != null) {
                    queue.offer(node.right);
                }
            }
            
            resultList.add(levelStr.toString());
        }
        
        return resultList.toArray(new String[0]);
    }
}

代码使用的编程语言是Java。

该题考察的知识点是二叉树的层序遍历和队列的使用。题目要求实现对给定二叉树进行层序遍历,并将每一层的节点值存储在一个字符串中,最后返回一个字符串数组作为结果。

  • Solution 类中,定义了一个 levelOrder 方法,参数为一个二叉树的根节点。该方法利用队列来实现层序遍历。
  • 对于空树的情况,直接返回一个空的字符串数组。
  • 创建一个队列 queue 和一个列表 resultList。首先将根节点入队列。
  • 在队列不为空的循环中,首先获取队列的大小 size,表示当前层的节点个数。然后创建一个 StringBuilder 对象 levelStr,用于存储当前层的节点值字符串。
  • 接下来,对于当前层的每个节点进行遍历操作。从队列中取出一个节点,将其值添加到 levelStr 中。然后,如果该节点有左子节点,将左子节点入队列;如果该节点有右子节点,将右子节点入队列。
  • 完成当前层的遍历后,将 levelStr 转换为字符串,并将其添加到 resultList 中。
  • resultList 转换为字符串数组,并将其作为结果返回。

二叉树的层序遍历,将每一层的节点值存储在字符串中,最后返回一个字符串数组作为结果。代码使用了队列来进行层序遍历操作。

全部评论

相关推荐

11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务