加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

LeetCode 1026. Maximum Difference Between Node and Ancestor

发布时间:2020-12-14 04:42:21 所属栏目:大数据 来源:网络整理
导读:原题链接在这里:https://leetcode.com/problems/maximum-difference-between-node-and-ancestor/ 题目: Given the? root ?of a binary tree,find the maximum value? V ?for which there exists?different?nodes? A ?and? B ?where? V = |A.val - B.val| ?

原题链接在这里:https://leetcode.com/problems/maximum-difference-between-node-and-ancestor/

题目:

Given the?root?of a binary tree,find the maximum value?V?for which there exists?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: [8,3,10,1,6,null,14,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. 

?

Note:

  1. The number of nodes in the tree is between?2?and?5000.
  2. Each node will have value between?0?and?100000.

题解:

Perform DFS top down. On each level,Calculate maxmimum difference and update minimum and maximum value.

Time Complexity: O(n).

Space: O(h).

AC Java:

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 class Solution {
11     int res = 0;
12     
13     public int maxAncestorDiff(TreeNode root) {
14         if(root == null){
15             return res;
16         }
17         
18         dfs(root,root.val,root.val);
19         return res;
20     }
21     
22     private void dfs(TreeNode root,int min,int max){
23         if(root == null){
24             return;
25         }
26         
27         res = Math.max(res,Math.max(Math.abs(root.val - min),Math.abs(max-root.val)));
28         min = Math.min(min,root.val);
29         max = Math.max(max,root.val);
30         dfs(root.left,min,max);
31         dfs(root.right,max);
32     }
33 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读