zoukankan      html  css  js  c++  java
  • [LeetCode] 199. 二叉树的右视图

    牛就一个字,我能说啥,一开始想到每次遍历最右边的节点,但又想到万一出现有一层只有左半部分的节点没有右半部分的节点就不好弄了,没想到可以用BFS遍历,每次取到最后一个数,腻害。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public List<Integer> rightSideView(TreeNode root) {
            List<Integer> res = new ArrayList<>();
            if (root == null) {
                return res;
            }
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root);
            while (!queue.isEmpty()) {
                int size = queue.size();
                for (int i = 0; i < size; i++) {
                    TreeNode node = queue.poll();
                    if (node.left != null) {
                        queue.offer(node.left);
                    }
                    if (node.right != null) {
                        queue.offer(node.right);
                    }
                    if (i == size - 1) {
                        res.add(node.val);
                    }
                }
            }
        return res;
        }
    }

    方法二:不是我能想得出来的想法 太厉害了

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        List<Integer> res = new ArrayList<>();
    
        public List<Integer> rightSideView(TreeNode root) {
            dfs(root, 0); // 从根节点开始访问,根节点深度是0
            return res;
        }
    
        private void dfs(TreeNode root, int depth) {
            if (root == null) {
                return;
            }
            if (depth == res.size()) {
                res.add(root.val);
            }
            depth++;
            dfs(root.right, depth);
            dfs(root.left, depth);
        }
    }
  • 相关阅读:
    [SpriteKit] 制作瓦片地图小游戏
    TouchID 指纹解锁
    iOS-启动动态页跳过设计思路
    iOS-高仿通讯录之商品索引排序搜索
    Python: PS 滤镜--马赛克
    Tensorflow学习笔记——占位符和feed_dict(二)
    Tensorflow学习笔记——张量、图、常量、变量(一)
    IDEA 单元测试
    sublime —— 强大的插件
    window环境下在anconda中安装opencv
  • 原文地址:https://www.cnblogs.com/doyi111/p/12757847.html
Copyright © 2011-2022 走看看