【LeetCode热题100】--199.二叉树的右视图

199.二叉树的右视图

思路:

使用根->右->左方法进行遍历节点,同时记录层数,将当前层数与记录的层数进行比较,如果当前层数大于记录的层数,添加该元素,若当前层数小于记录的层数,说明该层已经有元素被记录,就跳过,这样保证每层第一个被记录的一定是最右边的元素

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int maxHigh = 0;
    List<Integer> res = new ArrayList<Integer>();
    public List<Integer> rightSideView(TreeNode root) {
        dfs(root,1);
        return res;
    }

    public void dfs(TreeNode root,int high){
        if(root == null){
            return ;
        }
        if(maxHigh < high){
            res.add(root.val);
            maxHigh = high;
        }
        dfs(root.right,high + 1);
        dfs(root.left,high + 1);
    }
    
}
相关推荐
SuperBear1 分钟前
轮转数组 循环换位解法
算法
用户40315986396634 分钟前
版本号升级统计
java·算法
DoraBigHead27 分钟前
小哆啦解题记 · 射箭引爆气球,怎么射最省箭?
算法
AI_Keymaker40 分钟前
手术台上的AlphaGo:约翰霍普金斯大学发布自主手术机器人
算法·机器人
AI_Keymaker41 分钟前
人类早期驯服野生机器人珍贵影像(不是)
算法·机器人
今禾1 小时前
一行代码引发的血案:new Array(5) 到底发生了什么?
前端·javascript·算法
橙几1 小时前
击败了90%的解法?Two Sum 从 O(n²) 到 O(n) 的优化之路
算法
叶子爱分享2 小时前
经典排序算法之归并排序(Merge Sort)
算法·排序算法
珹洺2 小时前
C++算法竞赛篇:DevC++ 如何进行debug调试
java·c++·算法
Norvyn_72 小时前
LeetCode|Day18|20. 有效的括号|Python刷题笔记
笔记·python·leetcode