代码随想录算法训练营DAY17 | 二叉树 (4)

一、LeetCode 110 平衡二叉树

题目链接: 110.平衡二叉树icon-default.png?t=N7T8https://leetcode.cn/problems/balanced-binary-tree/

思路:设置深度计算函数,进行递归处理。

class Solution {public boolean isBalanced(TreeNode root) {if(root == null){return true;}boolean left = isBalanced(root.left);boolean right = isBalanced(root.right);int length_left = depth(root.left);int length_right = depth(root.right);int flag = length_left - length_right;if(flag >= -1 && flag <= 1){//本层平衡且左右子树均平衡return true && left && right;}else{return false;}}//计算子树深度public int depth(TreeNode root){if(root == null){return 0;}int left = depth(root.left);int right = depth(root.right);return left>right ? left+1 : right+1;}
}
/*** 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;*     }* }*/

 二、LeetCode 257 二叉树的所有路径

题目链接:257.二叉树的所有路径icon-default.png?t=N7T8https://leetcode.cn/problems/binary-tree-paths/description/

思路:递归+回溯。

class Solution {public List<String> binaryTreePaths(TreeNode root) {List<Integer> path = new ArrayList<>();List<String> ans = new ArrayList<>();path(root,path,ans);return ans;}public void path(TreeNode root, List<Integer> path, List<String> ans){path.add(root.val); //中//若为叶子节点则输出该路径if(root.left == null && root.right == null){StringBuilder sb = new StringBuilder();for(int i = 0; i < path.size()-1; i++){sb.append(path.get(i)).append("->");}//加入叶子节点sb.append(root.val);ans.add(sb.toString());}//回溯处理if(root.left != null){path(root.left,path,ans);path.remove(path.size()-1);}if(root.right != null){path(root.right,path,ans);path.remove(path.size()-1);}}
}
/*** 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;*     }* }*/

 三、LeetCode 404 左叶子之和

题目链接:404.左叶子之和icon-default.png?t=N7T8https://leetcode.cn/problems/sum-of-left-leaves/

思路:后序递归遍历、左叶子节点处理。

class Solution {public int sumOfLeftLeaves(TreeNode root) {if(root == null){return 0;}//递归遍历 左右中int left = sumOfLeftLeaves(root.left);int right = sumOfLeftLeaves(root.right);int mid = 0;//遇到左叶子节点就记录数值,否则记为0if(root.left != null && root.left.left == null && root.left.right == null){mid = root.left.val;}return left + mid + right;}
}
/*** 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;*     }* }*/

 四、小结

        假期结束,开刷OVO

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

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

相关文章

【原创 附源码】Flutter集成谷歌支付详细流程(附源码)

最近有时间&#xff0c;特意整理了一下之前使用过的Flutter平台的海外支付&#xff0c;附源码及demo可供参考 这篇文章只记录Google支付的详细流程&#xff0c;相关Flutter文章链接如下&#xff1a; 【原创 附源码】Flutter安卓及iOS海外登录--Google登录最详细流程 【原创 附…

【C语言】实现栈

目录 &#xff08;一&#xff09;栈 &#xff08;二&#xff09;头文件 &#xff08;三&#xff09;功能实现 &#xff08;1&#xff09;初始化栈 &#xff08;2&#xff09; 栈的销毁 &#xff08;3&#xff09;压栈 &#xff08;4&#xff09; 出栈 &#xff08;5&a…

【王道数据结构】【chapter5树与二叉树】【P158t9】

假设二叉树采用二叉链存储结构存储&#xff0c;设计一个算法&#xff0c;求先序遍历序列中第k个结点的值 #include <iostream> #include <stack> typedef struct treenode{char data;struct treenode *left;struct treenode *right; }treenode,*ptreenode;ptreenod…

Excel模板1:彩色甘特图

Excel模板1&#xff1a;彩色甘特图 分享地址 当前效果&#xff1a;只需要填写进度&#xff0c; 其余效果都是自动完成的 。 阿里网盘永久分享&#xff1a;https://www.alipan.com/s/cXhq1PNJfdm ​省心。能用公式的绝不使用手动输入。 ​​ 这个区域以及标题可以手动输入…

详解CC++内存管理(new和delete)

文章目录 写在前面1. C&C内存分布2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free3. C内存管理方式&#xff08;语法&#xff09;3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. new和delete的实现原理4.1 operator new与operator delete…

单测的思路

文章目录 定义方法的单测几种生成工具的对比生成步骤 接口的单测场景的单测参考 定义 单元测试&#xff08;Unit Testing&#xff09;是一种软件开发中的测试方法&#xff0c;它的主要目的是确保软件中的最小可测试单元&#xff08;通常是函数、方法或类&#xff09;在被单独测…

Netty Review - ServerBootstrap源码解析

文章目录 概述源码分析小结 概述 ServerBootstrap bootstrap new ServerBootstrap();bootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 1024).childHandler(new ChannelInitializer<SocketChannel>() …

全球夜间灯光(1992-2021 年)更新(1km空间分辨率)

统一的全球夜间灯光&#xff08;1992-2021 年&#xff09; 在这项研究中&#xff0c;作者通过协调来自 DMSP 数据的相互校准的 NTL 观测数据和来自 VIIRS 数据的模拟 DMSP 类 NTL 观测数据&#xff0c;生成了全球尺度的综合一致的 NTL 数据集。生成的全球 DMSP NTL 时间序列数据…

【运维测试】移动测试自动化知识总结第1篇:移动端测试介绍(md文档已分享)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论移动测试相关知识。主要知识点包括&#xff1a;移动测试分类及android环境搭建&#xff0c;adb常用命令&#xff0c;appium环境搭建及使用&#xff0c;pytest框架学习&#xff0c;PO模式&#xff0c;数据驱动&#xff0…

【十六】【C++】stack的常见用法和练习

stack的常见用法 C标准库中的stack是一种容器适配器&#xff0c;它提供了后进先出&#xff08;Last In First Out, LIFO&#xff09;的数据结构。stack使用一个底层容器进行封装&#xff0c;如deque、vector或list&#xff0c;但只允许从一端&#xff08;顶部&#xff09;进行…

Excel模板2:进度条甘特图

Excel模板2&#xff1a;进度条甘特图 ‍ 今天复刻B站up【名字叫麦兜的狗狗】的甘特图&#xff1a;还在买Excel模板吗&#xff1f;自己做漂亮简洁的甘特图吧&#xff01;_哔哩哔哩_bilibili 阿里网盘永久分享&#xff1a;https://www.alipan.com/s/cXhq1PNJfdm 当前效果&…

幻兽帕鲁Palworld专用服务器CPU内存配置怎么选择?

腾讯云幻兽帕鲁服务器配置怎么选&#xff1f;根据玩家数量选择CPU内存配置&#xff0c;4到8人选择4核16G、10到20人玩家选择8核32G、2到4人选择4核8G、32人选择16核64G配置&#xff0c;腾讯云百科txybk.com来详细说下腾讯云幻兽帕鲁专用服务器CPU内存带宽配置选择方法&#xff…