• 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/
    
  • 相关阅读:
    51 数据中重复的数字
    64 数据流中的中位数
    79. Word Search
    93. Restore IP Addresses
    547. Friend Circles
    Epplus Excel 导入 MSSQL 数据库
    用来更新服务的bat 脚本
    ASP.Net MVC 引用动态 js 脚本
    8、结构的构造器应该显式调用!!!(坑)
    Task 线程重用导致等待!
  • 原文地址:https://www.cnblogs.com/yh-simon/p/12906634.html
Copyright © 2020-2023  润新知