• [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 {
    
        List<Integer> ans = new ArrayList<>();
    
        public List<Integer> rightSideView(TreeNode root) {
            if (root == null) return ans;
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root);
            while (!queue.isEmpty()) {
                int levelSize = queue.size();
                for (int i = 0; i < levelSize; i++) {
                    TreeNode cur = queue.poll();
                    if (cur.left != null)
                        queue.offer(cur.left);
                    if (cur.right != null) 
                        queue.offer(cur.right);
                    if (i == levelSize - 1)
                        ans.add(cur.val);
                }
            }
            return ans;
        }
    
    }
    

    dfs

    以 根节点->右节点->左节点的顺序遍历二叉树,将每一层遍历得到的第一个节点加入答案列表中

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
    
        List<Integer> ans = new ArrayList<>();
    
        public List<Integer> rightSideView(TreeNode root) {
            if (root == null) return ans;
            dfs(root, 0);
            return ans;
        }
    
        private void dfs(TreeNode root, int depth) {
            if (root == null)
                return;
            // 如果当前节点的深度还没有出现在结果列表中则该节点是第一个被访问的节点
            if (depth == ans.size())
                ans.add(root.val);
            depth++;
            dfs(root.right, depth);
            dfs(root.left, depth);
        }
    
    }
    
  • 相关阅读:
    WGS84经纬度坐标与web墨卡托之间的转换【转】
    ArcGIS API for Javascript配置
    百度地图BMap API实例
    VS2010 Web项目需要缺少的Web组件才能加载
    单态模式
    对服务的操作
    根据子级ID获取其所有父级
    在DropDownList里显示多级分类
    jQuery给CheckBox添加事件
    FolderBrowserDialog使用
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859899.html
Copyright © 2020-2023  润新知