当前位置:网站首页>二叉树 6/20 86-90
二叉树 6/20 86-90
2022-08-10 05:36:00 【吉良吉影__.】
1.二叉树的最大深度( LeetCode 104 )
递归
/** * 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 maxDepth(TreeNode root) {
if(root == null)return 0;
if (root.left == null && root.right == null)return 1;
return Math.max(maxDepth(root.left),maxDepth(root.right)) + 1;
}
}
2.二叉树的最小深度( LeetCode 111 )
递归
/** * 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 minDepth(TreeNode root) {
if(root == null)return 0;
if (root.left == null && root.right == null)return 1;
int lh = minDepth(root.left);
int rh = minDepth(root.right);
//最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
if (lh == 0)return rh + 1;//左边孩子的高度等于0,代表叶子在右边
if (rh == 0)return lh + 1;
return Math.min(lh,rh) + 1;
}
}
3.二叉树的所有路径( LeetCode 257 )
回溯
/** * 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> ans = new ArrayList<>();
dfs(root,ans,new ArrayList<>());
return ans;
}
public void dfs(TreeNode node,List<String> ans,List<String> selected){
if (node == null)return;
if (node.left == null && node.right == null){
selected.add(node.val + "");
StringBuilder s = new StringBuilder();
for (String x:selected
) {
s.append(x);
}
ans.add(s.toString());
}else {
selected.add(node.val + "->");
}
dfs(node.left,ans,selected);
dfs(node.right,ans,selected);
selected.remove(selected.size() - 1);//回溯
}
}
4.平衡二叉树( LeetCode 110 )
递归
/** * 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 boolean isBalanced(TreeNode root) {
if (root == null)return true;//递归结束条件
if (!isBalanced(root.left))return false;//判断左子树是否是平衡二叉树
if (!isBalanced(root.right))return false;//判断右子树是否是平衡二叉树
//判断自己是否是平衡二叉树
return Math.abs(height(root.left) - height(root.right)) <= 1;
}
//求节点的高度
public int height(TreeNode node){
if (node == null)return 0;
if (node.left == null && node.right == null)return 1;
return Math.max(height(node.left),height(node.right)) + 1;
}
}
5.左叶子之和( 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 {
int ans = 0;
public int sumOfLeftLeaves(TreeNode root) {
dfs(root,null);
return ans;
}
public void dfs(TreeNode node,TreeNode parent){
if (node == null)return;
if (node.left == null
&& node.right == null //为叶子节点
&& parent != null //父节点不为空
&& parent.left == node //为左叶子节点
)ans += node.val;
dfs(node.left,node);
dfs(node.right,node);
}
}
边栏推荐
猜你喜欢
微信小程序-小程序的宿主环境
LeetCode 1351.统计有序矩阵中的负数(简单)
【目标检测】相关指标的引入与解析
Deep learning TensorFlow entry environment configuration
以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断
【fiddler4】使用fiddler设置简单并发
STM32单片机OLED俄罗斯方块单片机小游戏
Unity中实现Animation Clip动画片段的倒播(该案例可以防止动画延迟)
以STM32F103C6TA为例通过配置CubeMX实现GPIO输出完成点灯实例
LeetCode 162.寻找峰值(中等)
随机推荐
以STM32F103C6TA为例通过配置CubeMX实现GPIO输出完成点灯实例
pytorch-11.卷积神经网络(高级篇)
Pytorch配置与实战--Tips
一个基于.Net Core跨平台小程序考试系统
STC12C5A60S2单片机WIFI信号扫描报警监视系统信号增强信号过低报警
【目标检测】相关指标的引入与解析
【从零设计 LaTex 模板】1. 一些基础知识
pytorch-10.卷积神经网络(作业)
二维卷积定理的验证(上)
LeetCode 162.寻找峰值(中等)
LeetCode Interview Question 17.14 Minimum k Number (Moderate)
2021-04-15 jacoco代码覆盖率统计和白盒测试
51单片机RS485远程双机多机温度采集主从机多节点蜂鸣器报警
Linux的文件IO与标准IO,以及IO缓存
系统架构和问题定位
LeetCode 1720. Decoding XORed Arrays (Simple)
在Unity中判断游戏物体是否在游戏屏幕范围之内
手机端应用类型
微信小程序--模板与设置WXML
pytorch-05. Implementing linear regression with pytorch