zoukankan      html  css  js  c++  java
  • 1026. Maximum Difference Between Node and Ancestor

    Given the root of a binary tree, find the maximum value V for which there exist different nodes A and B where V = |A.val - B.val| and A is an ancestor of B.

    A node A is an ancestor of B if either: any child of A is equal to B, or any child of A is an ancestor of B.

    Example 1:

    Input: root = [8,3,10,1,6,null,14,null,null,4,7,13]
    Output: 7
    Explanation: We have various ancestor-node differences, some of which are given below :
    |8 - 3| = 5
    |3 - 7| = 4
    |8 - 1| = 7
    |10 - 13| = 3
    Among all possible differences, the maximum value of 7 is obtained by |8 - 1| = 7.

    Example 2:

    Input: root = [1,null,2,null,0,3]
    Output: 3
    

    Constraints:

    • The number of nodes in the tree is in the range [2, 5000].
    • 0 <= Node.val <= 105

    dfs, time = O(n), space = O(n)

    class Solution {
        int maxDiff = 0;
        
        public int maxAncestorDiff(TreeNode root) {
            dfs(root, root.val, root.val);
            return maxDiff;
        }
        
        public void dfs(TreeNode root, int min, int max) {
            if(root == null) {
                return;
            }
            
            max = Math.max(max, root.val);
            min = Math.min(min, root.val);
            maxDiff = Math.max(maxDiff, max - min);
            
            dfs(root.left, min, max);
            dfs(root.right, min, max);
        }
    }
  • 相关阅读:
    (Eclipse) Selection does not contain main type
    Spring Web Flow 学习笔记(2)-流程的组件
    Spring Web Flow 学习笔记(1)
    快速排序java实现
    二路归并排序
    剪切板
    Java中空白final
    对象引用和对象
    Java复用类
    Experimenrs on Foursquare
  • 原文地址:https://www.cnblogs.com/fatttcat/p/13959657.html
Copyright © 2011-2022 走看看