代码随想录算法刷题训练营day18

news2024/12/25 23:47:13

代码随想录算法刷题训练营day18:LeetCode(257)二叉树的所有路径、LeetCode(404)左叶子之和

LeetCode(257)二叉树的所有路径
题目
在这里插入图片描述

代码

import java.util.ArrayList;
import java.util.List;

/**
 * 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 List<String> binaryTreePaths(TreeNode root) {
        //递归+回溯--->获取二叉树的全部路径
        List<String> result=new ArrayList<>();//存放结果集合
        List<String> paths=new ArrayList<>();//存放临时路径集合
        //消除边缘情况
        if(root==null){
            return null;
        }
        //设置一个函数,用于递归+回溯所有路径的函数
        getPaths(result,paths,root);//它们均是引用型变量,是随着地址改变而改变
        return result;    
    }
    public void getPaths(List<String> result,List<String> paths,TreeNode root){
        //遍历路径时,需采用前序遍历
        //首先应把路径加入进去,防止再判断终止条件时空指针异常
        paths.add(String.valueOf(root.val));
        //终止条件----到叶子节点
        if(root.left==null&&root.right==null){
            //终止条件的时候,需要把路径返回到result结果中
            StringBuilder sb=new StringBuilder();
            for (int i = 0; i < paths.size(); i++) {
                sb.append(paths.get(i));
                if(i!=paths.size()-1){
                    sb.append("->");
                }
            }
            String path=sb.toString();
            result.add(path);
        }
        //遍历左子树----当成根节点
        if(root.left!=null){
            //左子树不为空的时候进行遍历
            getPaths(result, paths,root.left);
            //回溯---剪支
            paths.remove(paths.size()-1);//把最后一个元素,也就是刚刚遍历到的下一个元素给干掉
        }
        if (root.right!=null) {
            getPaths(result, paths, root.right);
            paths.remove(paths.size()-1);    
        }
    }
    
}

LeetCode(404)左叶子之和
题目
在这里插入图片描述
代码

/**
 * 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 sumOfLeftLeaves(TreeNode root) {
        //int sum=0;
        //递归条件变化一下
        if(root==null){
            return 0;
        }
        if(root.left==null&&root.right==null){
            return 0;
        }
        //int sum=0;
        int result=sumOfLeftLeavesTest(root);
        return result;
    }
    public int sumOfLeftLeavesTest(TreeNode root){
        if(root==null){
            return 0;
        }
        if(root.left==null&&root.right==null){
            return 0;
        }
        int leftSum=sumOfLeftLeavesTest(root.left);//此时是左子树,同样也是叶子节点
        int rightSum=sumOfLeftLeavesTest(root.right);
        int leftValue=0;
        if(root.left!=null&&root.left.left==null&&root.left.right==null){//空指针异常问题
            leftValue=root.left.val;
        }
        int sum=leftSum+rightSum+leftValue;
        return sum;
    }
}

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

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

相关文章

媒体邀约:怎么吸引总体目标受众?

新闻媒体影响力日益扩大。不论是公司、机构还是其他&#xff0c;都希望能够通过新闻媒体的曝光来吸引更多总体目标受众。要想真正吸引住总体目标受众并非易事&#xff0c;需要一定的方案和方法。下面我们就深入探究媒体邀约推广的真相&#xff0c;共享怎么吸引总体目标受众的方…

挂耳耳机哪个牌子好?挂耳耳机产品的几大推荐

如果你也是个运动爱好者&#xff0c;那你一定知道边运动边听歌是多么的提神! 我试过好多种耳机&#xff0c;那些长长的线总在运动时不断甩来甩去&#xff0c;真是让人烦不胜烦。而且戴久了耳朵里也不舒服。所以找一款真正适合运动的挂耳耳机太重要了&#xff0c;它能让你的运动…

【Docker】docker Overlay2 文件系统原理

概述 overlayFS是被称为联合文件系统的其中一个解决方案。在2014年&#xff0c;发布了第一个版本并且合并到了Linux的内核3.18版本中&#xff0c;此时&#xff0c;在docker被称为是overlay文件驱动。后来在Linux 内核4.0 版本中进行了改进&#xff0c;称为overlay2。&#xff…

模拟堆

import java.util.Scanner;public class Main{static int N 100010, size,m;static int[] h new int[N]; //h[i]表示下标i这个点是第多少static int[] hp new int[N]; //hp[i]表示下标为i的节点是第几个被加进来的static int[] ph new int[N]; //ph[i]表示第i个加进来…

BIO、NIO变成与直接内存、零拷贝

一、网络通信 1、什么是socket&#xff1f; Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层&#xff0c;它是一组接口&#xff0c;一般由操作 系统提供。客户端连接上一个服务端&#xff0c;就会在客户端中产生一个 socket 接口实例&#xff0c;服务端每接受 一个客户端…

qt初入门7:进度条,定时器,时间控件练习

参考课本demo&#xff0c;空闲时间练习一下进度条&#xff0c;定时器&#xff0c;日期相关控件和使用。 1&#xff1a;demo运行结果 2&#xff1a;进度条控件梳理 进度条显示控件实际上是QProgressBar, 显示的进度可以通过代码控制&#xff0c;也可以通过其他控件上获取到的值…

Android SystemUI 介绍

目录 一、什么是SystemUI 二、SystemUI应用源码 三、学习 SystemUI 的核心组件 四、修改状态与导航栏测试 本篇文章&#xff0c;主要科普的是Android SystemUI &#xff0c; 下一篇文章我们将介绍如何把Android SystemUI 应用转成Android Studio 工程项目。 一、什么是Syst…

【K12】运用tk控件演示欧姆定律串联电阻小应用

上述代码是一个基于Python的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;用于演示欧姆定律。用户可以通过输入电阻值来计算电流&#xff0c;并在图形上显示结果。该程序使用了Tkinter库来创建GUI&#xff0c;matplotlib库来绘制图形&#xff0c;以及numpy库进…

使用git工具向GitHub远程仓库提交代码

注意更新仓库&#xff1a; 远程仓库更新方法&#xff1a; 本地仓库更新方法&#xff1a;在终端进入克隆的文件夹&#xff0c;依次执行如下指令&#xff1a; git config pull.rebase false //使用默认的合并策略 git pull //执行实际的拉取操作以下为常规操作&#xff…

【React教程】(3) React之表单、组件、事件处理详细代码示例

目录 事件处理示例1示例2示例3&#xff08;this 绑定问题&#xff09;示例4&#xff08;传递参数&#xff09;Class 和 Style 表单处理组件组件规则注意事项函数式组件&#xff08;无状态&#xff09;类方式组件&#xff08;有状态&#xff09;组件传值 Propsthis.props.childr…

bert提取词向量比较两文本相似度

使用 bert-base-chinese 预训练模型做词嵌入&#xff08;文本转向量&#xff09; 模型下载&#xff1a;bert预训练模型下载-CSDN博客 参考文章&#xff1a;使用bert提取词向量 下面这段代码是一个传入句子转为词向量的函数 from transformers import BertTokenizer, BertMod…

神经网络建立(结果可变)最小神经元

目录 介绍&#xff1a; 初始化&#xff1a; 建模: 预测&#xff1a; 改变结果&#xff1a; 介绍&#xff1a; 在深度学习中&#xff0c;神经元通常指的是人工神经元&#xff08;或感知器&#xff09;&#xff0c;它是深度神经网络中的基本单元。深度学习的神经元模拟了生…

腾讯发表多模态大模型最新综述,从26个主流大模型看多模态效果提升关键方法

在大规模语言模型&#xff08;LLMs&#xff09;通往通用人工智能&#xff08;AGI&#xff09;的道路中&#xff0c;从传统的单一的“语言模态”扩展到“图像”、“语音”等等的“多模态”必然是大模型进化的必经之路。 在过去的 2023 年&#xff0c;多模态大规模语言模型&…

Java 与 JavaScript的区别

Java 与 JavaScript的区别 Java 与 JavaScript&#xff1a;概述Java的特点JavaScript 的起源JavaScript 的特点Java 与 JavaScript&#xff0c;哪个更好&#xff1f;JavaScript 与 Java 相似吗&#xff1f;Java 与 JavaScript 的区别JavaScript 在服务器端的运行方式是怎样的&a…

arco design table遇到的一些问题

问题1&#xff1a;不知情就成了树形table table中不知道为啥就多了个树形加号在前面&#xff0c;查找问题后发现&#xff0c;是后端返回的数据中有children&#xff0c;框架中默认对这个参数做了树形结构。 解决办法&#xff1a; 当时没找到取消或者修改字段的属性或方法&…

美赛违规被判作弊,注意这几种情况

每年都会有队伍被判为作弊或无效&#xff0c;无非就是买了思路、找了代做或不小心造成的。 下图是2023美赛评奖结果&#xff08;MCM是前三题&#xff0c;ICM是后三题&#xff0c;去年疫情补办了春季赛&#xff09;&#xff0c;可以看到共1264个队被取消评奖资格&#xff08;Di…

扩展学习|一文明晰推荐系统应用开发核心技术发展

文献来源&#xff1a;Lu J, Wu D, Mao M, et al. Recommender system application developments: a survey[J]. Decision support systems, 2015, 74: 12-32. 主题&#xff1a;关于推荐系统应用开发的调查研究 关键词:推荐系统、电子服务个性化、电子商务、电子学习、电子政务 …

STM32学习笔记一——初识STM32

目录 一、什么是ARM 二. Cortex 内核 三.什么是STM32 四.STM32核心板原理图&#xff1a; 五.STM32的内部结构&#xff1a; 六.stm32系统结构简化图 STM32基本原理分析&#xff1a; 七.典型型号——STM32F103ZET6 stm32——32位单片机&#xff08;数据总线是32位的&am…

idea连接docker

idea 插件无法连接docker问题 原文&#xff1a;idea 插件无法连接docker问题 // 修改docker配置 vi /usr/lib/systemd/system/docker.service // 加上该段配置允许任何ip访问 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock // 重启docker即可 systemctl restart dock…

计算机网络·网络层

网络层 网络层提供的两种服务 争论&#xff1a; 网络层应该向运输层提供怎样的服务&#xff1f;面向连接还是无连接&#xff1f; 在计算机通信中&#xff0c;可靠交付应当由谁来负责&#xff1f;是网络还是端系统&#xff1f; 2 种观点&#xff1a; 面向连接的可靠交付。 无连…