当前位置:网站首页>二叉树 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);
}
}
边栏推荐
猜你喜欢
随机推荐
pytorch-06.逻辑斯蒂回归
LeetCode 938.二叉搜索树的范围和(简单)
51单片机营养液自动配置搅拌系统TDS浓度采集自动加水加营养液
Tensorflow 2.0 使用流程详解
STM32F407ZG PWM
LeetCode 292.Nim 游戏(简单)
LeetCode 100. The same tree (simple)
Unity中Xml简介以及通过脚本读取Xml文本中的内容
STM32单片机RGB红蓝调光植物补光系统红光蓝光PWM调色调节亮度
2021-04-15 jacoco代码覆盖率统计和白盒测试
在Unity中让物体围绕自身的x、y、z轴进行旋转(亲测有效)
STM32F407ZG 看门狗 IWDG & WWDG
Machine Learning - Clustering - Shopping Mall Customer Clustering
LeetCode 2011. Variable Value After Action (Simple)
【接口自动化】
一个基于.Net Core 开源的物联网基础平台
pytorch-09. Multi-classification problem
【从零设计 LaTex 模板】1. 一些基础知识
Flutter Package 插件开发
PyTorch之CV