【二叉树part04】| 110.平衡二叉树、257.二叉树的所以路径、404.左叶子之和

news2024/11/17 23:34:14

目录

✿LeetCode110.平衡二叉树❀

✿LeetCode257.二叉树的所有路径❀

 ✿LeetCode404.左叶子之和❀


✿LeetCode110.平衡二叉树❀

链接:110.平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

 

 分别求出左右子树的高度,然后看相差是否大于1,代码如下:

public boolean isBalanced(TreeNode root) { 
        if(getHeight(root)==-1){
            return false;
        }
        return true;
    }
    public int getHeight(TreeNode root){
        if(root==null){
            return 0;
        }
        int leftH=getHeight(root.left);
        if(leftH==-1){
            return -1;
        }
        int rightH=getHeight(root.right);
        if(rightH==-1){
            return -1;
        }
        if(Math.abs(leftH-rightH)>1){
            return -1;
        }else{
            return 1+Math.max(leftH,rightH);
        }
    }

✿LeetCode257.二叉树的所有路径❀

链接:257.二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

 

这道题是求二叉树的所有路径,我用了回溯算法,代码如下: 

List<String> result;
    List<Integer> path;
    public List<String> binaryTreePaths(TreeNode root) {
        result=new ArrayList<>();
        path=new ArrayList<>();
        if(root==null){
            return result;
        }
        traversal(root);
        return result;

    }
    public void traversal(TreeNode root){
        path.add(root.val);    //中
        if(root.left==null && root.right==null){
            String str="";
            for(int i=0;i<path.size()-1;i++){
                str+=path.get(i).toString();
                str+="->";
            }
            str+=path.get(path.size()-1).toString();
            result.add(str);
        }
        if(root.left!=null){
            traversal(root.left);   //左
            path.remove(path.size()-1);  //回溯
        }
        if(root.right!=null){
            traversal(root.right);  //右
            path.remove(path.size()-1);   //回溯
        }
        
    }

 ✿LeetCode404.左叶子之和❀

链接:404.左叶子之和

给定二叉树的根节点 root ,返回所有左叶子之和。

 

这道题关键在于,什么是左叶子,左叶子就是左孩子的左右孩子都为空,即可写出如下代码: 

public int sumOfLeftLeaves(TreeNode root) {
        if(root==null){
            return 0;
        }
        int leftsum=sumOfLeftLeaves(root.left);
        if(root.left!=null && root.left.left==null && root.left.right==null){
            leftsum=root.left.val;
        }
        int rightsum=sumOfLeftLeaves(root.right);
        int sum=leftsum+rightsum;
        return sum;
    }

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

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

相关文章

Redis的数据类型及对应的数据结构(一)

Redis的数据类型和数据结构的对应关系 左边是 Redis 3.0版本的&#xff0c;也就是《Redis 设计与实现》这本书讲解的版本&#xff0c;右边是7.0,注意区别很大 数据类型包括&#xff1a;String、List、Hash、Set、ZSet 对应的底层数据结构入上图 String的应用场景 缓存对象 …

17.API Promise化 miniprogram-api-promise

目录 1 安装 2 配置 3 使用 1 安装 安装之后会在项目路径下出现这个目录&#xff0c;这个目录中又我们之前安装过的npm包 我们删除掉 miniprogram_npm 这个目录 然后点击构建 npm 构建之后就自动变成这样 2 配置 进入 app.js&#xff0c;然后写下面这些东西 3 使用

C++——auto关键字

目录 1. auto简介 2. auto的使用细则 3. auto的实际应用价值 1. auto简介 在早期C/C中auto的含义是&#xff1a;使用auto修饰的变量&#xff0c;是具有自动存储器的局部变量&#xff0c;但遗憾的是一直没有人去使用它&#xff0c;大家可思考下为什么&#xff1f; C11中&…

安装单机版openGauss

安装单机版openGauss 环境白名单查看ip地址问题解决python版本之间的问题yum指向2.7的编译 安装启动数据库 环境 下载python3.6.8 首先linux中的版本是默认的2.7.5.要下载3.6.8&#xff0c;需要用到wget&#xff0c; openGauss数据库基本操作&#xff08;超详细&#xff09; …

MATLAB 之 低层绘图操作和光照及材质处理

这里写目录标题 一、低层绘图操作1. 曲线对象2. 曲面对象3. 文本对象4. 其他核心对象4.1 区域块对象4.2 方框对象 二、光照和材质处理1. 光照处理2. 材质处理2.1 图形对象的反射特性2.2 material 函数 一、低层绘图操作 MATLAB 将曲线、曲面、文本等图形均视为对象&#xff0c…

五、一些经典的网络架构

一、Alexnet 2012年卷积神经网络的开篇鼻祖 但放到现在确实有很多的弊端和有待改进的地方 1&#xff0c;网络基本架构 8层网络&#xff0c;其中有5层卷积&#xff0c;3层全连接 网络层数的定义&#xff1a;主要看有没有参数运算的参与&#xff0c;例如卷积层和全连接就可以…

Xubuntu22.04之安装少儿编程scratch3.3(一百八十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

SPEC CPU 2006 gcc version 8.3.0 (Uos 8.3.0.3-3+rebuild) x86_64 源码编译tools 错误处理笔记

编译tools 拷贝tools到安装目录 cp /mnt/iso/tools /opt/speccpu2006/ -r 执行编译 su rootcd /opt/speccpu2006/tools/src sh -x buildtools 错误 undefined reference to __alloca 编辑./make-3.82/glob/glob.c&#xff0c;注释掉以下宏判断 you should not run config…

「网络编程」第二讲:socket套接字(四 - 完结)_ Linux任务管理与守护进程 | TCP协议通讯流程

「前言」文章是关于网络编程的socket套接字方面的&#xff0c;上一篇是网络编程socket套接字&#xff08;三&#xff09;&#xff0c;这篇续上篇文章的内容&#xff0c;下面开始讲解&#xff01; 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先…

linux之用户和用户组

在此之前我们需要先了解用户和用户组的区别 用户是我们可以登录的账号&#xff0c;而用户组是用户的小组&#xff0c;组也可以分为主组和附属组&#xff0c;主组是用户的主要组&#xff0c;附属而是用户的附加组 目录 1.添加新用户账号 2.用户口令的管理 3.用户组命令 1.添加…

被测系统架构与数据流分析

开源项目litemall系统架构(https://github.com/linlinjava/litemall) 角色与数据用户产品前端技术栈后端技术栈数据存储 开源项目Mall的系统架构(https://github.com/macrozheng/mall) 角色与数据用户产品前端技术栈后端技术栈服务治理技术栈监控技术栈大数据处理技术栈数据存…

校园视频AI分析预警系统 TesnorFlow

校园视频AI分析预警系统通过分布式TensorFlow模型训练&#xff0c;校园视频AI分析预警系统对学生的行为进行实时监测&#xff0c;当系统检测到学生出现打架、翻墙、倒地、抽烟等异常行为时&#xff0c;校园视频AI分析预警系统将自动发出警报提示相关人员及时采取措施。深度学习…

Elasticsearch 和数据架构:改进分析和存储的 4 个基本工具

作者&#xff1a;Emily McAlister 组织越来越依赖数据来做出有效的、基于证据的决策来推动业务成果。 无论是评估市场状况和改善客户体验、确保应用程序正常运行时间还是保护组织安全&#xff0c;来自多个来源&#xff08;包括消费者和内部系统&#xff09;的数据对于日常运营都…

开源URL短链接服务Shlink

最近一直有人在问&#xff0c;docker 查询注册表失败的问题&#xff0c;目前老苏验证可用的方法有 2 个&#xff1a; 方法一&#xff08;可用&#xff09;&#xff1a; 看过老苏以前文章的读者都知道&#xff0c;在遇到发布到 ghcr.io 的镜像时&#xff0c;老苏都会推荐用 do…

MacOS Ventura 13.4.1 (22F82) 带 OC 引导双分区黑苹果镜像

苹果今日向 Mac 电脑用户推送了 macOS 13.4.1 更新&#xff08;内部版本号&#xff1a;22F82&#xff09;&#xff0c;根据Apple的发布说明&#xff0c;该更新提供了重要的安全修复&#xff0c;并建议所有用户进行更新。Apple还为无法运行Ventura的用户发布了macOS 11.7.8和mac…

Git进阶系列 | 5. Rebase vs Merge

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第5篇。原文&#xff1a;Rebase vs. Merge: Integrating Changes in Git[1] 大多数开发人员都理解在G…

【五子棋实战】第4章 部署五子棋计算接口到Window、Linux上

【五子棋实战】第4章 部署五子棋计算接口到Window、Linux上 python项目打包成exe可执行文件 ## 步骤一、安装pyinsatller ## 步骤二、使用pyinstaller打包Python程序 ## 操作演示 ## 注意事项&#xff01;&#xff01; python的Flask接口部署&#xff08;Linux&#xff09; ##…

二叉树-理论基础

文章目录 前言一、二叉搜索树平衡二叉搜索树 二、二叉树的存储方式二叉树的遍历方式二叉树的定义总结 前言 二叉树有两种主要的形式&#xff1a;满二叉树和完全二叉树。满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上…

16.vant Weapp

目录 1 使用npm 2 安装 vant 3 构建npm 4 去除 style:v2 5 使用 vant 6 样式变量 1 使用npm 微信小程序不支持下面三种包 不支持依赖 Node.js 内置库的包不支持依赖 浏览器内置对象 的包不支持依赖 C插件 的包 除去上面三种&#xff0c;能用的包就不多了&#…

面向AI的新编程范式

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 联合制作 / 声网 产品统筹 / bobo 录音间 / 声湃轩北京站 在这期播客节目中&#xff0c;我们将探讨AI与程序员如何共同进步。随着AI热潮席卷全球&#xff0c;许多程序员尝试着使…