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

提升网站性能水果商城的设计与实现

提升网站性能,水果商城的设计与实现,嵌入式和网站开发,高端网站建设多少钱104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root #xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1#xff1a; 输入#xff1a;root [3,9,20,null,null,15,7] 输出#xff1a;3…104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root 返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1 输入root [3,9,20,null,null,15,7] 输出3示例 2 输入root [1,null,2] 输出2提示 树中节点的数量在 [0, 104] 区间内。-100 Node.val 100 方法一后序遍历DFS 思路 使用递归方法计算二叉树的最大深度。二叉树的最大深度可以表示为 如果节点为空即 root None那么深度为 0。否则树的最大深度为左子树和右子树的最大深度加 1。递归地计算左右子树的深度并返回它们的最大值加 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) {if (root null ){return 0;}else{return Math.max(maxDepth(root.left),maxDepth(root.right))1;}} } 思路与算法 如果我们知道了左子树和右子树的最大深度 l 和 r那么该二叉树的最大深度即为 max(l,r)1 复杂度分析 时间复杂度O(N)其中 N 是二叉树中的节点数。因为我们每个节点都需要访问一次。空间复杂度O(H)其中 H 是二叉树的高度。在最坏情况下树完全倾斜递归栈的深度可能会达到树的高度。 示例 对于输入 root [3,9,20,null,null,15,7] 根节点 3 的左子树深度为 1右子树深度为 2。因此最大深度为 2 1 3。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def maxDepth(self, root: Optional[TreeNode]) - int:# 如果节点为空深度为 0if root is None:return 0# 递归求左右子树的深度left_depth self.maxDepth(root.left)right_depth self.maxDepth(root.right)# 返回左右子树较大深度加 1return max(left_depth, right_depth) 1方法 2迭代 DFS使用栈 可以用栈来实现 DFS从根节点开始将每个节点和对应的深度存入栈中然后更新最大深度。 代码如下 class Solution:def maxDepth(self, root: Optional[TreeNode]) - int:# 特殊情况处理if root is None:return 0# 使用栈来进行 DFS每个元素是 (节点, 深度)stack [(root, 1)]max_depth 0# 开始 DFSwhile stack:node, depth stack.pop()if node:# 更新最大深度max_depth max(max_depth, depth)# 将左右子节点及其深度加入栈stack.append((node.left, depth 1))stack.append((node.right, depth 1))return max_depth方法二层序遍历BFS 树的层序遍历 / 广度优先搜索往往利用 队列 实现。 关键点 每遍历一层则计数器 1 直到遍历完成则可得到树的深度。 在计算二叉树的最大深度时我们也可以使用广度优先搜索BFS来实现。BFS 会按层遍历二叉树因此每遍历完一层深度就增加 1。使用 BFS 的优点是它逐层访问节点可以在找到最远叶子节点时直接得出最大深度。 从根节点开始将其加入队列并初始化深度为 0。每一层的节点都会被处理并在遍历该层的所有节点后深度增加 1。当队列为空时说明所有层都遍历完了此时的深度就是树的最大深度。 代码实现 以下是 BFS 的实现代码使用 Python 的 collections.deque 来实现队列操作 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def maxDepth(self, root: Optional[TreeNode]) - int:# 如果根节点为空直接返回深度 0if root is None:return 0# 初始化队列并将根节点加入队列queue deque([root])depth 0# 开始 BFSwhile queue:# 每一层的节点数量level_size len(queue)# 处理当前层的所有节点for _ in range(level_size):node queue.popleft()# 将子节点加入队列if node.left:queue.append(node.left)if node.right:queue.append(node.right)# 当前层处理完深度加 1depth 1return depth 复杂度分析 时间复杂度O(N)其中 N 是节点数。每个节点访问一次。空间复杂度O(W)其中 W 是树的最大宽度。在最坏情况下队列中最多会存储一层的所有节点数量。 示例 对于输入 root [3,9,20,null,null,15,7] 第一层只有根节点 3深度为 1。第二层有节点 9 和 20深度增加到 2。第三层有节点 15 和 7深度增加到 3。遍历完所有层最终返回深度 3。
http://www.sczhlp.com/news/198890/

相关文章:

  • 网站秒收录怎么做的优秀的图片设计网站推荐
  • 如何让做网站公司网站建设需要准备哪些资料
  • 营业推广的概念河北网站优化
  • 网站信息资源建设包括哪些汽车网站建设工作室
  • 瓯海网站建设wordpress边栏显示
  • 犀牛云做网站做网站需要多钱谷歌浏览器网页截图快捷键
  • 网站开发架构图免费域名解析网站
  • 网站 cmsasp做静态网站
  • 宁波市江东区地块建设网站重庆建设岗位证书查询网
  • 4399小游戏网站入口能找本地人做导游的网站
  • 对网站建设有什么样好的建设意见wordpress显示分类
  • 现在网站要怎么做才有人台州建设网站
  • 电子商务网站策划书3000字青海省建设局网站
  • 网站的设计风格临安市住房和建设局网站
  • 2025.10
  • 编制综合网站平台的公司排名不用iis建立网站
  • 网站做跳转链接营销网站
  • 株洲建设网站制作网站建设需注意点
  • 送上门卤菜网站要怎么做设计页面ui
  • 公司网站建设服务要写网站建设方案
  • 点餐网站模板 手机端四川公共资源交易网招标网
  • 郑州建站多少钱宿迁 网站制作
  • 做移动网站快速排名wordpress图片地址
  • 单页网站上传教程iis网站下载
  • 电子商务网站规划与建设wordpress 验证
  • 天河建设网站方案分类目录不要前缀wordpress
  • iphone做网站服务器杭州职业能力建设网
  • 官方网站举例做精细化工网站
  • 洛阳市网站建设赣州网站建设百家号
  • 丰浩网站建设中心wap模板