题解 | #牛群左侧视图#

牛群左侧视图

https://www.nowcoder.com/practice/1eba2dd947484c078e6359ccd90aa7b1

题目考察的知识点

考察二叉树的广度优先搜索

题目解答方法的文字分析

和前面的二叉树层序遍历代码几乎一样,在后面每层遍历完的时候,将最开头的第一个元素加入到结果中,即为最左的元素。具体细节见注释。

本题解析所用的编程语言

使用Java解答

完整且正确的编程代码

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 int整型一维数组
     */
    public int[] leftSideView (TreeNode root) {
        // write code here
        List<Integer> ret = new ArrayList<Integer>();
        if (root == null) {
            return new int[0];
        }

        Queue<TreeNode> queue = new
        LinkedList<TreeNode>(); //队列 数据类型是TreeNode
        queue.offer(root); //加入节点
        while (!queue.isEmpty()) {
            List<Integer> level = new ArrayList<Integer>();
            int currentLevelSize = queue.size();
            for (int i = 1; i <= currentLevelSize; ++i) {
                TreeNode node = queue.poll();
                level.add(node.val);
                if (node.left != null) {
                    queue.offer(node.left);
                }
                if (node.right != null) {
                    queue.offer(node.right);
                }
            }
            ret.add(level.get(0));//取出每层最左侧的元素
        }
        int[] res = new int[ret.size()];
        for (int i = 0; i < ret.size(); i++) {
            res[i] = ret.get(i);
        }
        return res;
    }
}

全部评论

相关推荐

程序员花海:实习太简单了 学历可以的 实习描述应该是先介绍业务 再介绍技术 技术咋推动业务的 做到了啥收益 有没有做实验 实验组和对照组有什么不同 你最后学到了什么 有没有参与处理过线上问题 有没有参与过公司的code review 有没有参与过技术分享 这些都是可以在实习描述中写的 并且实习和项目不一样不会撞车 应该放在最前面 放在教育背景下面 另外项目有点烂大街 可以看下我主页的简历优化案例
秋招,不懂就问
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务