6.11左叶子之和(LC404-E)

用java定义树:

public class TreeNode {int val;TreeNode left;TreeNode right;
//一个空构造方法`TreeNode()`,用于初始化节点的默认值。TreeNode() {}
//一个构造方法`TreeNode(int val)`,用于初始化节点的值,并设置默认的左右子节点。TreeNode(int val) { this.val = val; }
//一个构造方法`TreeNode(int val, TreeNode left, TreeNode right)`,用于初始化节点的值、左子节点和右子节点。TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}

在Java中,每个源代码文件只能包含一个公共类。这意味着在一个源代码文件中,只能有一个类被声明为公共类(使用 `public class` 关键字)。

该公共类的名称必须与文件名相匹配,以确保编译器能够正确识别和加载该类。

然而,一个源代码文件可以包含多个非公共类(非公共类没有使用 `public` 修饰符)。这些非公共类可以在同一个文件中定义,并且可以被同一个包中的其他类访问和使用。

虽然一个源代码文件只能有一个公共类,但可以在同一个项目中有多个源代码文件,每个文件都包含一个公共类。这样可以通过在不同的文件中定义不同的公共类来组织和管理代码。

总结起来,一个源代码文件只能包含一个公共类,但可以包含多个非公共类。通过使用多个源代码文件,可以在一个项目中拥有多个公共类。

题目:

算法:

我们可以很容易得判断叶子节点,但是难以判断左叶子。

可以这样判断:

20.left.left==null && 20.left != null && 20.left.right==null

这道题适合后序遍历(LRV),最后把值传到根节点。

正确代码:

/*** 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) {//首先判断root是否为空//JAVA的if判断要用括号,无冒号if (root == null) return 0;//递归调用`sumOfLeftLeaves`方法计算左子树的左叶子节点int leftnum = sumOfLeftLeaves(root.left);//递归调用`sumOfLeftLeaves`方法计算右子树的左叶子节点int rightnum = sumOfLeftLeaves(root.right);//判断当前节点的左子节点是否存在,且它的左子节点和右子节点都为null。//如果满足这个条件,说明当前节点的左子节点是一个左叶子节点,将其值赋给`midnum`。int midnum = 0;if (root.left != null && root.left.left == null && root.left.right == null)midnum = root.left.val;int sum = leftnum + rightnum + midnum;return sum;}
}

注意:

每次写完后面都要加“;”

每出现一个新变量,都要声明其类型

时间空间复杂度:

这段代码的时间复杂度为O(n),其中n是二叉树中的节点数量。这是因为代码使用递归方式遍历整个二叉树,每个节点都会被访问一次。

空间复杂度取决于递归调用的深度,即递归栈的大小。在最坏的情况下,如果二叉树是一个单链的斜树,递归栈的深度将是n,因此空间复杂度为O(n)。在平均情况下,递归栈的深度取决于二叉树的平衡性,通常为O(log n)。

总结起来,这段代码的时间复杂度为O(n),空间复杂度为O(n)或O(log n),取决于二叉树的形状。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

切换服务器上自己用户目录下的 conda 环境和一个外部的 Conda 环境

如果我们有自己的 Miniconda 安装和一个外部的 Conda 环境(比如一个全局安装的 Anaconda),我们可以通过修改 shell 环境来切换使用它们。这通常涉及到更改 PATH 环境变量,以便指向你想要使用的 Conda 安装的可执行文件&#xff1a…

应用Web3.0的5种方法提升你的点击量

Web3.0早已成为互联网的全新方向标,为用户带来全新的手机上网感受。它也变成吸引住点击量疯涨的秘密武器。我们将要详细介绍Web3.0的五种使用方法,帮助你更好的了解并应用Web3.0技术性,以提升你的点击量。 1.可靠的身份认证Web3.0技术性提供了…

基于ThinkPHP8 + Vue3 + element-ui-plus + 微信小程序(原生) + Vant2 的 BBS论坛系统设计【PHP课设】

一、BBS论坛功能描述 我做的是一个论坛类的网页项目,每个用户可以登录注册查看并发布文章,以及对文章的点赞和评论,还有文件上传和个人签名发布和基础信息修改,管理员对网站的数据进行统计,对文章和文件的上传以及评论…

mac上Homebrew的安装与使用

打开终端:command空格 ,搜索‘’终端 ’,打开终端 在终端中输入以下命令并按下回车键: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"这个命令会自动下载并安装…

从零开始学优惠券样式代码编写,让你的网站焕然一新!

样式1&#xff1a; 代码实例&#xff1a; <div class"box"><div class"itemBox"><div class"leftBox">全额抵扣</div><div class"rightBotton"><button>立即使用</button></div><…

Java数组的复制、截取(内含例题:力扣-189.轮转数组)

目录 数组的复制、截取&#xff1a; 1、使用Arrays中的copyOf方法完成数组的拷贝 2、使用Arrays中的copyofRange方法完成数组的拷贝 题目链接&#xff1a; 数组的复制、截取&#xff1a; 1、使用Arrays中的copyOf方法完成数组的拷贝 public class Csdn {public static vo…

C语言--每日选择题--Day24

第一题 1. 在C语言中&#xff0c;非法的八进制是&#xff08; &#xff09; A&#xff1a;018 B&#xff1a;016 C&#xff1a;017 D&#xff1a;0257 答案及解析 A 八进制是0&#xff5e;7的数字&#xff0c;所以A错误 第二题 2. fun((exp1,exp2),(exp3,exp4,exp5))有几…

GPS 定位信息分析:航向角分析及经纬度坐标转局部XY坐标

GPS 定位信息分析&#xff08;1&#xff09; 从下面的数据可知&#xff0c;raw data 的提取和经纬度的计算应该是没问题的 在相同的经纬度下&#xff0c; x 和 y 还会发生变化&#xff0c;显然是不正确的 raw data:3150.93331124 11717.59467080 5.3 latitude: 31.8489 long…

【云原生 Prometheus篇】Prometheus的动态服务发现机制

自动发现 一、Prometheus服务发现 理论部分1.1 Prometheus数据采集配置1.2 基于文件的服务发现1.3 基于consul的服务发现1.4 基于 Kubernetes API 的服务发现1.4.1 概念1.4.2 部分配置参数1.4.3 配置模板 二、实例一&#xff1a;部署基于文件的服务发现2.1 创建用于服务发现的文…

给虚拟机配置静态id地址

1.令人头大的原因 当连接虚拟机的时候 地址不一会就改变&#xff0c;每次都要重新输入 2.配置虚拟机静态id地址 打开命令窗口执行 : vim /etc/sysconfig/network-scripts/ifcfg-ens33 按下面操作修改 查看自己子网掩码 3.重启网络 命令行输入 systemctl restart netwo…

基于光纤环形激光器的optisystem仿真及其传感应用

近年来&#xff0c;光纤传感器在航空航天领域&#xff0c;工业制造&#xff0c;医疗等领域引起了越来越多的关注&#xff0c;因为他们体积小&#xff0c;结构简单&#xff0c;灵敏度高&#xff0c;抗电磁干扰强&#xff0c;防腐性能好的特点。各种各样的传感器结构被设计出来&a…

[SWPUCTF 2021 新生赛]no_wakeup

直接赋值即可 $a ->admin admin; $a ->passwd wllm; 发现没有绕过&#xff0c;改成大于2的绕过__wakeup 这是因为PHP在反序列化时会检查序列化字符串的长度&#xff0c;如果长度小于等于2&#xff0c;则不会调用__wakeup()方法。