当前位置: 首页 > news >正文

代码随想录二刷day16

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣104. 二叉树的最大深度
  • 二、力扣559. N 叉树的最大深度
  • 三、力扣111. 二叉树的最小深度
  • 三、力扣力扣222. 完全二叉树的节点个数


前言


一、力扣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;}int l = maxDepth(root.left);int r = maxDepth(root.right);return l > r ? l + 1 : r + 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;*     }* }*/
class Solution {public int maxDepth(TreeNode root) {Deque<TreeNode> deq = new LinkedList<>();if(root == null)return 0;deq.offerLast(root);int high = 0;while(!deq.isEmpty()){int len = deq.size();for(int i = 0; i < len; i ++){TreeNode p = deq.pollFirst();if(p.left!= null)deq.offerLast(p.left);if(p.right != null)deq.offerLast(p.right);}high ++;}return high;}
}

二、力扣559. N 叉树的最大深度

迭代

/*
// Definition for a Node.
class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, List<Node> _children) {val = _val;children = _children;}
};
*/class Solution {public int maxDepth(Node root) {Deque<Node> deq = new LinkedList<>();if(root == null)return 0;deq.offerLast(root);int high = 0;while(!deq.isEmpty()){int len = deq.size();for(int i = 0; i < len; i ++){Node p = deq.pollFirst();List<Node> li = p.children;for(Node n : li){if(n != null){deq.offerLast(n);}}}high ++;}return high;}
}

递归

/*
// Definition for a Node.
class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, List<Node> _children) {val = _val;children = _children;}
};
*/class Solution {public int maxDepth(Node root) {if(root == null)return 0;int[] arr = new int[root.children.size()];int max = 0;for(int i = 0; i < arr.length; i ++){arr[i] = maxDepth(root.children.get(i));max = max > arr[i] ? max : arr[i];}return max + 1;}
}

三、力扣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) {Deque<TreeNode> deq = new LinkedList<>();if(root == null)return 0;deq.offerLast(root);int depth = 0;while(!deq.isEmpty()){int len = deq.size();for(int i = 0; i <len ; i ++){TreeNode p = deq.pollFirst();if(p.left == null && p.right == null){return depth + 1;}if(p.left != null)deq.offerLast(p.left);if(p.right != null)deq.offerLast(p.right);}depth ++;}return depth;}
}

递归

class Solution {/*** 递归法,相比求MaxDepth要复杂点* 因为最小深度是从根节点到最近**叶子节点**的最短路径上的节点数量*/public int minDepth(TreeNode root) {if (root == null) {return 0;}int leftDepth = minDepth(root.left);int rightDepth = minDepth(root.right);if (root.left == null) {return rightDepth + 1;}if (root.right == null) {return leftDepth + 1;}// 左右结点都不为nullreturn Math.min(leftDepth, rightDepth) + 1;}
}

三、力扣力扣222. 完全二叉树的节点个数

迭代

/*** 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 countNodes(TreeNode root) {Deque<TreeNode> deq = new LinkedList<>();if(root == null)return 0;deq.offerLast(root);int count = 0;while(!deq.isEmpty()){int len = deq.size();for(int i = 0; i < len ; i ++){TreeNode p = deq.pollFirst();count ++;if(p.left != null)deq.offerLast(p.left);if(p.right != null)deq.offerLast(p.right);}}return count;}
}

递归

/*** 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 countNodes(TreeNode root) {if(root == null)return 0;int l = countNodes(root.left);int r = countNodes(root.right);return l + r + 1;}
}
http://www.lryc.cn/news/157151.html

相关文章:

  • 【开发】安防监控/视频存储/视频汇聚平台EasyCVR优化播放体验的小tips
  • 力扣(LeetCode)算法_C++—— 只出现一次的数字
  • Windows配置SonarQube代码审查工具详细步骤(附带IDEA SonarLint插件使用)
  • 【Unity3D】UI Toolkit元素
  • Task :app:compileDebugKotlin FAILED
  • Android——数据存储(一)(二十一)
  • 机器学习课后习题 ---数学基础回顾
  • CS420 课程笔记 P4 - 以16进制形态编辑游戏文件
  • 计算机毕设之Python的高校成绩分析(含文档+源码+部署)
  • 【Sentinel】核心API-Entry与Context
  • HashMap源码阅读解惑
  • 如何解决前端传递数据给后端时精度丢失问题
  • 使用Maven创建父子工程
  • Vue+elementUI 导出word打印
  • 数学建模-点评笔记 9月3日
  • 使用Spring来管理对象关系映射(ORM)
  • 【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
  • 算法:删除有序数组中的重复项---双指针[3]
  • AR产业变革中的“关键先生”和“关键力量”
  • 通过 Blob 对二进制流文件下载实现文件保存下载
  • 微信小程序使用lime-echart踩坑记录
  • Unity 编辑器资源导入处理函数 OnPostprocessTexture :深入解析与实用案例
  • stable diffusion实践操作-宽高设置以及高清修复
  • 利用微调的deberta-v3-large来预测情感分类
  • opencv旋转图像
  • 容器资料: Docker和Singularity
  • 如何确认linux的包管理器是yum还是apt,确认之后安装其他程序的时候就需要注意安装命令
  • 数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法...
  • MySQL 8.0.34安装教程
  • 用通俗易懂的方式讲解大模型分布式训练并行技术:概述