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/
    
  • 相关阅读:
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
    15. 3Sum
    14. Longest Common Prefix
    13. Roman to Integer
    12. Integer to Roman
    11. Container With Most Water
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/yh-simon/p/12906634.html
Copyright © 2011-2022 走看看