【CT】LeetCode手撕—124. 二叉树中的最大路径和

news2024/12/23 2:09:59

目录

  • 题目
  • 1- 思路
    • 递归 dfs 思路
  • 2- 实现
    • ⭐124. 二叉树中的最大路径和——题解思路
  • 3- ACM 实现


题目

  • 原题连接:124. 二叉树中的最大路径和

1- 思路

模式识别:最大路径和 ——> 递归

递归 dfs 思路

递归公式

  • sum = 自己 + 左 + 右

递归中的返回结果

  • output = 自己 + max(左,右)

找结果——更新结果

  • maxSum = Math.max(maxSum, sum);

2- 实现

⭐124. 二叉树中的最大路径和——题解思路

在这里插入图片描述

class Solution {
    int maxSum = Integer.MIN_VALUE;
    public int maxPathSum(TreeNode root) {
        // 递归
        dfs(root);
        return maxSum;
    }


    public int dfs(TreeNode root){
        // 1. 终止条件
        if(root==null){
            return 0;
        }

        // 2. 递归公式,递归逻辑
        int left = dfs(root.left);
        int right = dfs(root.right);
        int sum = root.val + left + right;

        maxSum = Math.max(sum,maxSum);

        // 3. 每次返回值
        int output = root.val + Math.max(left,right);
        if(output>0) return output;
        return 0;
    }
}

3- ACM 实现

public class treeMaxPath {

    static class TreeNode{
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(){}
        TreeNode(int x){
            val = x;
        }
    }

    public static TreeNode build(Integer[] nums){
        // 借助队列来构造树
        Queue<TreeNode> queue = new LinkedList<>();
        TreeNode root = new TreeNode(nums[0]);
        queue.offer(root);
        int index = 1;
        while(!queue.isEmpty()){
            TreeNode node = queue.poll();
            if(index<nums.length && nums[index]!=null){
                node.left = new TreeNode(nums[index]);
                queue.offer(node.left);
            }
            index++;
            if(index<nums.length && nums[index]!=null){
                node.right = new TreeNode(nums[index]);
                queue.offer(node.right);
            }
            index++;
        }
        return root;
    }

    public static int dfs(TreeNode root){
        // 1.终止条件
        if(root==null){
            return 0;
        }

        // 2. 递归
        int left = dfs(root.left);
        int right = dfs(root.right);
        int sum = root.val + left + right;
        maxSum = Math.max(sum,maxSum);

        int output = root.val + Math.max(left,right);
        if(output>0) return output;
        return 0;
    }

    static int maxSum = Integer.MIN_VALUE;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入二叉树构造数组");
        String input = sc.nextLine();
        input = input.replace("[","");
        input = input.replace("]","");
        String[] parts = input.split(",");
        Integer[] nums = new Integer[parts.length];
        for(int i = 0 ; i < parts.length;i++){
            if(!parts[i].equals("null")){
                nums[i] = Integer.parseInt(parts[i]);
            }else{
                nums[i] = null;
            }
        }
        TreeNode root = build(nums);
        dfs(root);
        System.out.println("结果是"+maxSum);
    }
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1860634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PowerPaint:强大扩图编辑工具,兼具上下文感知和文本引导对象修复,ComfyUI体验指南

大家好我是极客菌&#xff01; ComfyUI扩图编辑工具&#xff0c;是一款功能强大的图像编辑软件&#xff0c;集成了多种先进的图像处理技术和创意工具。无论你是想要放大图像、修复图像中的缺陷&#xff0c;还是想要实现上下文感知和文本引导对象修复&#xff0c;ComfyUI都能轻…

TypeError: compilation.getPathWithInfo is not a function

本地运行&#xff0c;npm run dev 正常启动&#xff0c;当修改内容后保存&#xff0c;出现报错&#xff0c;中断编译。 TypeError: compilation.getPathWithInfo is not a function 项目首次能成功运行&#xff0c;热更新时报错而中断&#xff1b; 参考网上的解决办法&#x…

Webpack: 底层配置逻辑

概述 Webpack 5 提供了非常强大、灵活的模块打包功能&#xff0c;配合其成熟生态下数量庞大的插件、Loader 资源&#xff0c;已经能够满足大多数前端项目的工程化需求&#xff0c;但代价则是日益复杂、晦涩的使用方法&#xff0c;开发者通常需要根据项目环境、资源类型、编译目…

Python生成器嵌套太多?使用yield from秒变简洁!

目录 1、yield from基础概念 🌐 1.1 yield关键字回顾 1.2 yield from引入动机 2、yield from深入解析 🧭 2.1 语法与用法 2.2 传递生成器控制权 2.3 与迭代器的高效整合 2.4 与传统yield对比优势 3、实战应用示例 📈 3.1 链接多个生成器 3.2 简化递归生成器实…

什么牌子的开放式耳机好?五大优质机型,新手必看!小白闭眼入系列

音乐技术的不断进步为耳机市场的发展有了更多的选择&#xff0c;开放式耳机成为音乐爱好者们新的一个选择。从最初的基础音质到如今的高解析度音频&#xff0c;开放式耳机经历了一次次的技术革新和升级。这类耳机以开放式不入耳的设计&#xff0c;舒适的佩戴体验著称&#xff0…

C语言实现的飞机票系统解析

前言 操作系统&#xff1a;Windows下运行。如果需要在Linux运行&#xff08;单机版&#xff09;&#xff0c;则需要修改删除conio.h&#xff0c;自己写个头文件获取键盘输入。我已经写好了getch.h文件&#xff0c;需要将其导入使用。 开发环境&#xff1a;CodeBlocks || VS C…

界面组件DevExpress WinForms v24.1 - 支持DateOnly TimeOnly类型

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

嘀嗒出行项目管理专家和项目管理负责人王禹华受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 嘀嗒出行项目管理专家和项目管理负责人王禹华女士受邀为第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“AI时代项目经理挑战机会和个人成长”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; AI时代对互…

Pyecharts入门

数据可视化 Pyecharts简介 Apache ECharts 是一个由百度开源的数据可视化&#xff0c;凭借着良好的交互性&#xff0c;精巧的图表设计&#xff0c;得到了众多开发者的认可。而 Python 是一门富有表达力的语言&#xff0c;很适合用于数据处理。当数据分析遇上数据可视化时&#…

Vue下载接口返回流的处理

1.下载接口返回流如下&#xff1a; 2.可以写公共方法处理 excelDownload(obj, name Date.now(), suffix xlsx) {//Date.now()获取当前日期const url window.URL.createObjectURL(//Blob是二进制大对象new Blob([obj], { type: application/vnd.ms-excel }))const aDOM docu…

【一竞技LCK】夏季赛:HLE强势横扫2比0击败KT!

北京时间6月24日&#xff0c;LCK夏季赛在昨天结束了第二周最后一个比赛日的比赛。昨天第二场比赛是HLE战队迎战DK战队&#xff0c;本赛季DK战队的状态可以说是相当的低迷&#xff0c;在首轮比赛是被KDF战队给2比0横扫&#xff0c;昨天面对实力不俗的HLE战队也是落了下风&#x…

工程化视角的 Kotlin Multiplatform核心解读及优化

本篇为KMP技术的技术及实践系列文章的第二篇。在这篇技术文章中我们会以百人移动研发团队的工程化视角&#xff0c;探讨Kotlin Multiplatform的核心技术及优化。 Kotlin: 语言与编译 人们在用自然语言沟通时&#xff0c;内容可以不明确&#xff0c;甚至小的错误&#xff0c;而听…

【数学建模】—【Python库】—【Numpy】—【学习】

目录 ​编辑 1. NumPy安装 2. ndarray对象 1. 创建ndarray 1.从列表或元组创建&#xff1a; 2.使用内置函数创建&#xff1a; 2. ndarray属性 3. 数组运算 1. 基本运算 2. 数学函数 3.统计函数 4. 数组索引与切片 1. 一维数组索引与切片 2.多维数组索引与切片 5.…

Excel 宏录制与VBA编程 —— 16、InputBox函数的使用方式

Input函数基本操作 InputBox函数的Type参数使用技巧&#xff08;输入类型限制&#xff0c;若输入类型不符系统提示&#xff09; 关注 笔者 - jxd

山东大学-科技文献阅读与翻译(期末复习)(选择题+翻译)

目录 选择题 Chapter1 1.which of the following is not categorized as scientific literature 2.Which of the followings is defined as tertiary(三级文献) literature? 3.Which type of the following international conferences is listed as Number one conference…

【Redis】数据持久化

https://www.bilibili.com/video/BV1cr4y1671t?p96 https://blog.csdn.net/weixin_54232666/article/details/128821360 单点redis问题&#xff1a; 数据丢失问题&#xff1a;实现Redis数据持久化并发能力问题&#xff1a;搭建主从集群&#xff0c;实现读写分离故障恢复问题&…

jeecg导入excel 含图片(嵌入式,浮动式)

jeecgboot的excel导入 含图片&#xff08;嵌入式&#xff0c;浮动式&#xff09; 一、啰嗦二、准备三、 代码1、代码&#xff08;修改覆写的ExcelImportServer&#xff09;2、代码&#xff08;修改覆写的PoiPublicUtil&#xff09;3、代码&#xff08;新增类SAXParserHandler&a…

算法设计与分析:并查集法求图论桥问题

目录 一、实验目的 二、问题描述 三、实验要求 四、算法思想 1. 基准算法 1.1 算法思想 1.2 代码 1.3 时间复杂度 2. 使用并查集的高效算法 2.1 算法思想 2.2 代码&#xff1a; 2.3 时间复杂度&#xff1a; 五、实验结果 一、实验目的 1. 掌握图的连通性。 2. 掌…

《代码大模型安全风险防范能力要求及评估方法》正式发布

​代码大模型在代码生成、代码翻译、代码补全、错误定位与修复、自动化测试等方面为研发人员带来了极大便利的同时&#xff0c;也带来了对安全风险防范能力的挑战。基于此&#xff0c;中国信通院依托中国人工智能产业发展联盟&#xff08;AIIA&#xff09;&#xff0c;联合开源…

干货分享 | TSMaster 的 CAN UDS 诊断操作指南(下)

上期&#xff0c;我们主要介绍了 UDS 诊断模块的创建以及TSMaster 基础诊断配置。很多客户表示意犹未尽。因此我们将继续带来《TSMaster 的 CAN UDS 诊断操作指南&#xff08;下&#xff09;》的精彩内容&#xff0c;为您带来UDS on CAN/CAN FD 的功能以及详细的使用操作。 本文…