LeeCode打卡第二十八天

LeeCode打卡第二十八天

第一题:路径总和II(LeeCode第437题):

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。
路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

解法一:深度优先搜索

主要思想:穷举的方法,从根节点开始遍历,每找到一条路径就记录一次。

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 pathSum(TreeNode root, long targetSum) {
        if(root == null) return 0;
        int ret = rootSum(root, targetSum);
        ret += pathSum(root.left,targetSum);
        ret += pathSum(root.right,targetSum);
        return ret;
    }
    public int rootSum(TreeNode root, long targetSum){
        int ret = 0;
        if(root == null) return 0;
        int val = root.val;
        if(val == targetSum) ret++;
        ret += rootSum(root.left, targetSum - val);
        ret += rootSum(root.right, targetSum - val);
        return ret;
    }
}

第二题:二叉树的最近公共祖先(LeeCode第236题):

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”


主要思想:用递归的方式,如果p,q分别在某节点的左右子树上,则祖先节点为该节点,不然,p,q都在该节点的左子树或者右子树上,再向下递归寻找,

java">/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null || root == p || root == q) return root;
        TreeNode left = lowestCommonAncestor(root.left, p, q);
        TreeNode right = lowestCommonAncestor(root.right, p, q);
        if(left == null) return right;
        if(right == null) return left;
        return root;
    }
}

第三题:二叉树中的最大路径和(LeeCode第124题):

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。


主要思想:用递归的方式,从左下方的节点开始,以该节点为起点,依次向后遍历,用ans存储最小值,将每次遍历后的结果与ans进行比较,取最大值,

java">/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null || root == p || root == q) return root;
        TreeNode left = lowestCommonAncestor(root.left, p, q);
        TreeNode right = lowestCommonAncestor(root.right, p, q);
        if(left == null) return right;
        if(right == null) return left;
        return root;
    }
}

http://www.niftyadmin.cn/n/5665213.html

相关文章

计算机网络第二章:作业 1: Web 服务器

文档:Web服务器的实现和测试 一、问题描述 本次实验要求开发一个简单的基于Python的Web服务器,服务器能够处理HTTP请求并返回HTML文件的内容。具体来说,Web服务器需要执行以下操作: 接收并解析HTTP请求:Web服务器从…

XXl-SSO分布式单点登录框架

概述 下载地址:https://gitee.com/xuxueli0323/xxl-sso 文档地址:https://www.xuxueli.com/xxl-sso/ 概述 XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、CookieToken均支持…

What is the new in C#11?

目录 Raw String Literals List Pattern Slice Pattern Var Pattern File Local Types Required Members Auto Default Structs Ref Fields Raw String Literals """里面的内容是space敏感的。 意思是如果”age”前面有几个空格,就会打印几个…

(PySpark)RDD实验实战——取一个数组的中间值

实验环境:提前准备好findspark,pyspark,py4j等库 import findspark from pyspark import SparkContext, SparkConffindspark.init() #初始化spark,默认为你所设定的环境变量conf SparkConf().setAppName("jsytest").…

Facebook运营:账号类型有哪些?有必要用静态住宅IP吗?

Facebook作为月活跃用户数高达几十亿的社交媒体平台,一直不断有新用户选择加入。从个人用户的生活分享到企业用户的商务宣传推广,Facebook提供各大功能和模块来满足用户需求。相应的,用户也需要了解平台特点来进行相应的操作。本文从账号类型…

五种数据库特性对比(Redis/Mysql/SQLite/ES/MongoDB)

做后端开发的程序员基本都要学会数据库的相关知识。 1、关系型数据 今天就着这段时间了解大模型的事需要牵扯到是我们接触最多的、也是入门后端必学的关系型数据库。在关系型数据库中,数据以表的形式进行组织和存储,每个表就像一个 Excel 表格&#xf…

Qt_多元素控件

目录 1、认识多元素控件 2、QListWidget 2.1 使用QListWidget 3、QTableWidget 3.1 使用QListWidget 4、QTreeWidget 4.1 使用QTreeWidget 5、QGroupBox 5.1 使用QGroupBox 6、QTabWidget 6.1 使用QTabWidget 结语 前言: 在Qt中,控件之间…

neo4j安装为服务+配置环境变量

目录 neo4j安装为服务 windows services 参照JDK,将neo4j加入到环境变量 neo4j安装为服务 windows services 我的上一篇文章详细写明了如何安装启动neo4j《neo4j安装启动教程对应的jdk配置》,文末的启动neo4j是通过cmd命令行访问bin目录,这…