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);
        }
    }
  • 相关阅读:
    使用jquery.validate.js实现boostrap3的校验和验证
    MySQL 随机取数据效率问题
    qq在线客服代码
    使用Shell脚本查找程序对应的进程ID,并杀死进程
    Redis-概述
    JVM的类加载机制
    volatile
    java内存相关
    设计模式--模板方法
    设计模式概述
  • 原文地址:https://www.cnblogs.com/fatttcat/p/13959657.html
Copyright © 2011-2022 走看看