LeetCode:1026. 节点与其祖先之间的最大差值(DFS Java)

目录

[1026. 节点与其祖先之间的最大差值](#1026. 节点与其祖先之间的最大差值)

题目描述:

实现代码与解析:

DFS

原理思路:


1026. 节点与其祖先之间的最大差值

题目描述:

给定二叉树的根节点 root,找出存在于 不同 节点 AB 之间的最大值 V,其中 V = |A.val - B.val|,且 AB 的祖先。

(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)

示例 1:

复制代码
输入:root = [8,3,10,1,6,null,14,null,null,4,7,13]
输出:7
解释: 
我们有大量的节点与其祖先的差值,其中一些如下:
|8 - 3| = 5
|3 - 7| = 4
|8 - 1| = 7
|10 - 13| = 3
在所有可能的差值中,最大值 7 由 |8 - 1| = 7 得出。

示例 2:

复制代码
输入:root = [1,null,2,null,0,3]
输出:3

提示:

  • 树中的节点数在 25000 之间。
  • 0 <= Node.val <= 105

实现代码与解析:

DFS

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {

    public int res = 0;
    public void dfs(TreeNode t, int mx, int mi) {

        int x = t.val;
        res = Math.max(res, Math.max(Math.abs(mx - x), Math.abs(mi - x)));
        mx = Math.max(x, mx);
        mi = Math.min(x, mi);
        if (t.left != null) dfs(t.left, mx, mi);
        if (t.right != null) dfs(t.right, mx, mi);
    }
    public int maxAncestorDiff(TreeNode root) {

        dfs(root, root.val, root.val);
        return res;
    }
}

原理思路:

求从根节点方向向叶子节点方向的最大差值,因为是取绝对值,所以DFS记录路径上的最大值和最小值,然后与当前遍历的节点取差值,更新res,max,min即可。还是比较简单的。

相关推荐
小陈phd8 小时前
多模态大模型学习笔记(二)——机器学习十大经典算法:一张表看懂分类 / 回归 / 聚类 / 降维
学习·算法·机器学习
@––––––8 小时前
力扣hot100—系列4-贪心算法
算法·leetcode·贪心算法
CoovallyAIHub8 小时前
让本地知识引导AI追踪社区变迁,让AI真正理解社会现象
深度学习·算法·计算机视觉
CoderCodingNo8 小时前
【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
开发语言·c++·算法
yumgpkpm8 小时前
预测:2026年大数据软件+AI大模型的发展趋势
大数据·人工智能·算法·zookeeper·kafka·开源·cloudera
CoovallyAIHub8 小时前
AAAI 2026这篇杰出论文说了什么?用LLM给CLIP换了个“聪明大脑”
深度学习·算法·计算机视觉
Physicist in Geophy.8 小时前
一维波动方程(从变分法角度)
线性代数·算法·机器学习
im_AMBER9 小时前
Leetcode 115 分割链表 | 随机链表的复制
数据结构·学习·算法·leetcode
Liue612312319 小时前
【YOLO11】基于C2CGA算法的金属零件涂胶缺陷检测与分类
人工智能·算法·分类
!!!!8139 小时前
蓝桥备赛Day1
数据结构·算法