zoukankan      html  css  js  c++  java
  • 5398.统计二叉树中好节点的数目

    image-20200517172020176

    提示

    1.二叉树中节点数目范围是 [1, 10^5] 。
    2.每个节点权值的范围是 [-10^4, 10^4] 。
    

    核心思路

    • 二叉树+DFS

    代码

        //2ms    
        int ans = 0;
        public int goodNodes(TreeNode root) {
            int max=root.val;
            TreeNode pre=root;
            dfs(root, max,pre,root);
            return ans;
        }
    
        public void dfs(TreeNode node,int max,TreeNode pre,TreeNode root){
            max=Math.max(node.val,max);
            if(node.val==max){
                ans++;
            }
            if(node.left!=null){
                pre=node;
                if(pre==root) max=root.val;
                dfs(node.left,max,pre,root);
            }
            if(node.right!=null){
                pre=node;
                if(pre==root) max=root.val;
                dfs(node.right, max,pre,root);
            }
        }
    

    优化

        static int ans;
        public int goodNodes(TreeNode root) {
            ans = 0;
            dfs(root, Integer.MIN_VALUE);
            return ans;
        }
        
        private void dfs(TreeNode root, int cur_Max) {   //cur_Max记录节点之前的最大值
            if (root == null) return ;
            cur_Max = Math.max(cur_Max, root.val);  //当root.val >= cur_Max, cur_Max赋予当前节点的值,即cur_Max == root.val,该节点为“好节点”
            if (cur_Max == root.val) ans++;  
            dfs(root.left, cur_Max);
            dfs(root.right, cur_Max);
        }
    
    作者:imaginee
    链接:https://leetcode-cn.com/problems/count-good-nodes-in-binary-tree/solution/java-di-gui-de-liang-chong-jie-fa-by-imaginee/
    
  • 相关阅读:
    JSON
    css3之自定义字体
    css3之2D转换
    JavaScript---认识JavaScipt
    学JS必看-JavaScript数据结构深度剖析
    Vue 过渡
    Vue 表单控件绑定
    Vue 方法与事件处理器
    Vue 列表渲染
    Vue 条件渲染
  • 原文地址:https://www.cnblogs.com/yh-simon/p/12906634.html
Copyright © 2011-2022 走看看