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

石景山做网站学编程多久可以写游戏辅助

石景山做网站,学编程多久可以写游戏辅助,月租网站空间,外贸软件都是怎么收费的一、题目描述 给你二叉树的根节点 root #xff0c;返回其节点值 自底向上的层序遍历 。 #xff08;即按从叶子节点所在层到根节点所在的层#xff0c;逐层从左向右遍历#xff09; 示例 1#xff1a; 输入#xff1a;root [3,9,20,null,null,15,7] 输出#xff1a;[…一、题目描述 给你二叉树的根节点 root 返回其节点值 自底向上的层序遍历 。 即按从叶子节点所在层到根节点所在的层逐层从左向右遍历 示例 1 输入root [3,9,20,null,null,15,7] 输出[[15,7],[9,20],[3]]示例 2 输入root [1] 输出[[1]]示例 3 输入root [] 输出[]提示 树中节点数目在范围 [0, 2000] 内-1000 Node.val 1000 二、解题思路 这个问题是关于如何对二叉树进行自底向上的层序遍历。我们可以使用一个队列来进行广度优先搜索BFS并使用一个变量来记录当前层的节点值。在遍历每一层的时候我们使用一个双端队列Deque来存储当前层的节点值这样我们就可以从双端队列的尾部开始遍历从而实现自底向上的层序遍历。 算法步骤 初始化一个空队列queue用于BFS以及一个空的双端队列deque用于存储当前层的节点值。如果root不为空则将其加入queue。初始化一个变量level为0用于标识当前层的奇偶性。当queue不为空时进行以下操作 a. 获取当前层的节点数量size即queue的长度。 b. 遍历当前层的节点对于每个节点 i. 从queue中移除节点并将其值加入deque的头部如果level为偶数或尾部如果level为奇数。 ii. 如果该节点的左子节点不为空将其加入queue。 iii. 如果该节点的右子节点不为空将其加入queue。 c. 将deque转换为列表并加入结果列表result。 d. 将level加1清空deque。返回结果列表result。 三、具体代码 import java.util.ArrayList; import java.util.Deque; import java.util.LinkedList; import java.util.List; import java.util.Queue;public class Solution {public ListListInteger levelOrderBottom(TreeNode root) {ListListInteger result new ArrayList();if (root null) {return result;}QueueTreeNode queue new LinkedList();queue.offer(root);int level 0;while (!queue.isEmpty()) {int size queue.size();DequeInteger deque new LinkedList();for (int i 0; i size; i) {TreeNode node queue.poll();if (node ! null) {deque.offerLast(node.val);queue.offer(node.left);queue.offer(node.right);}}if (!deque.isEmpty()) {result.add(0, new ArrayList(deque));}}return result;} }四、时间复杂度和空间复杂度 1. 时间复杂度 levelOrderBottom 函数会对每个节点进行一次操作其中 n 是树中节点的数量。因此总的时间复杂度是 O(n)。 2. 空间复杂度 空间复杂度主要取决于队列和双端队列中存储的节点数量。在最坏的情况下树是完全不平衡的例如每个节点都只有左子节点或者只有右子节点此时队列和双端队列中存储的节点数量最多为 O(n)。因此总的空间复杂度是 O(n)。 综上所述代码的时间复杂度是 O(n)空间复杂度也是 O(n)其中 n 是树中节点的数量。 五、总结知识点 队列Queue的使用代码中使用了LinkedList类作为Queue的实现用于在BFS中存储待遍历的节点。队列遵循先进先出FIFO的原则。 递归虽然代码中没有直接使用递归但BFS本质上是一种递归的过程通过循环模拟递归的调用栈。 双端队列Deque的使用代码中使用了LinkedList类作为Deque的实现用于在每一层遍历时存储当前层的节点值。双端队列可以同时从两端添加或删除元素。 迭代与循环使用while循环来迭代遍历树的每一层直到队列为空。 条件语句使用if-else语句来判断节点是否为空以及判断队列是否为空。 数据结构转换使用ArrayList和LinkedList之间的转换将Deque中的元素转换为一个List然后添加到结果List中。 布尔变量的使用使用布尔变量level来标志当前层的奇偶性并在每层遍历后取反。 树节点的定义代码中使用了TreeNode类来定义二叉树的节点每个节点包含一个整数值和指向左右子节点的引用。 函数返回值levelOrderBottom函数返回一个包含多层的ListListInteger表示二叉树的自底向上的层序遍历结果。 边界条件的处理在函数开始时检查root是否为空如果为空则直接返回一个空列表。 以上就是解决这个问题的详细步骤希望能够为各位提供启发和帮助。
http://www.hkea.cn/news/14405787/

相关文章:

  • 商务门户网站怎么做亚马逊网站建设特点
  • 宁夏固原建设网站html网页设计题库
  • 深圳企业营销型网站建设泊头市网站建设
  • 白城学习做网站的学校专业的网站建设哪家快
  • 金阊网站建设app网站推广平台
  • 深圳网站建设找哪家公司好网站开发合同存在的缺陷
  • 网站建设与开发是什么岗位长沙本土网站建设公司
  • wordpress怎么搜站点阿里云wordpress数据库备份
  • 定制网站制作公司有哪些wordpress 管理地址
  • 老干部局网站建设的意义甘肃再就业建设集团网站
  • 网站关键词排名优化wordpress the7 模板
  • 在线视频播放网站开发广州凡科互联网科技股份有限公司
  • 用jq和ajax做能登陆注册的一个网站怡清源企业网站建设可行性分析
  • 二手书市场网站建设项目规划表做网站pdf不能预览
  • 怎么选择网站建设大气金融网站
  • 外贸网站推广计划撮合交易网站建设方案
  • 礼品做便宜的网站新闻静态网站模板下载
  • 泉州专业网站建设哪家好南宁开发公司
  • 深圳营销网站建设模板稀奇古怪好玩有用的网站
  • 网站开发精灵wordpress主题安装路径
  • 微信官方网站怎么进入贵阳网站外包
  • 自己做游戏网站卖汽车的网站怎么做的
  • 网站开发的主要流程WordPress 标签 模板
  • 如何查询某个网站的设计公司商城网站制作方案
  • 物流网站免费源码高邮网站开发
  • 免费商城网站模板wordpress wdown
  • 网站建设的基本步骤有哪些淘客网站怎么与pid
  • 网站开发工程师学什么区别建立主题网站的知识点
  • 石家庄做网站公司汉狮价格wordpress 图书主题
  • 哪个网站可以做条形码网站建设流程步骤