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

葫芦岛市住房和城乡建设局网站网站404页面怎么做

葫芦岛市住房和城乡建设局网站,网站404页面怎么做,制冷+网站建设+中企动力,可以用来展示的网站好的,我来用中文详细解释这段代码的算法思想。 问题描述 题目要求给定一个二叉树的根节点,从树的右侧看过去,按从上到下的顺序返回看到的节点值。即,我们需要找到每一层的最右侧节点并将其加入结果中。 算法思想 这道题可以通…

在这里插入图片描述
好的,我来用中文详细解释这段代码的算法思想。

问题描述

题目要求给定一个二叉树的根节点,从树的右侧看过去,按从上到下的顺序返回看到的节点值。即,我们需要找到每一层的最右侧节点并将其加入结果中。

算法思想

这道题可以通过广度优先搜索(BFS)来解决。BFS的特点是逐层遍历树的节点,非常适合在每一层获取最右侧的节点。以下是具体的算法步骤:

  1. 使用队列进行层序遍历

    • 我们采用BFS来逐层遍历树,BFS通常会使用队列(Queue)来实现。
    • 首先,将树的根节点放入队列中。
  2. 每层节点的遍历

    • 在每一层开始时,我们记录队列的大小,即当前层的节点数。
    • 然后,我们依次从队列中取出该层的每一个节点,处理这些节点,并将它们的左右子节点加入队列,以便下一层继续遍历。
    • 在遍历当前层的节点时,我们将当前层的最后一个节点(即最右侧的节点)保存下来。
  3. 记录每层最右侧的节点

    • 对于每一层的节点,最后一个处理的节点就是该层的最右侧节点。
    • 因此,在遍历每层的过程中,我们将每层最后一个节点的值添加到结果列表中。
  4. 返回结果

    • 当遍历完所有层后,结果列表中就存储了从上到下每一层的最右侧节点值。
      java solution
class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> result = new ArrayList<>();if(root == null) return result;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while(!queue.isEmpty()) {int size = queue.size(); //获取当前层的节点数TreeNode rightmostNode = null; //保存当前层的最右侧节点for(int i = 0; i < size; ++i) {TreeNode currentNode = queue.poll(); //取出当前节点rightmostNode = currentNode;if(currentNode.left != null) queue.offer(currentNode.left);if(currentNode.right != null) queue.offer(currentNode.right);}if(rightmostNode != null) result.add(rightmostNode.val);}return result;}
}

关键步骤解释

  1. 初始化结果列表List<Integer> result = new ArrayList<>();

    • 用于存储每层的最右侧节点值。
  2. 判断根节点是否为空if (root == null) return result;

    • 如果根节点为空,则直接返回空列表,因为没有节点可以被观察到。
  3. 使用队列来实现BFS

    • Queue<TreeNode> queue = new LinkedList<>(); 初始化一个队列。
    • queue.offer(root); 将根节点加入队列,准备开始逐层遍历。
  4. 逐层遍历

    • while (!queue.isEmpty()) 表示只要队列中还有节点,继续进行遍历。
    • int size = queue.size(); 获取当前层的节点数量。
    • TreeNode rightmostNode = null; 初始化一个变量来保存当前层的最右侧节点。
  5. 遍历当前层的所有节点

    • for (int i = 0; i < size; i++) 遍历当前层的所有节点。
    • TreeNode currentNode = queue.poll(); 从队列中取出当前节点。
    • rightmostNode = currentNode; 每次循环都会更新最右侧节点的值,最后一次更新的节点就是该层的最右侧节点。
    • if (currentNode.left != null) queue.offer(currentNode.left); 将左子节点加入队列(如果存在)。
    • if (currentNode.right != null) queue.offer(currentNode.right); 将右子节点加入队列(如果存在)。
  6. 记录每层的最右侧节点

    • if (rightmostNode != null) result.add(rightmostNode.val); 将当前层的最右侧节点值添加到结果列表中。
  7. 返回结果

    • return result; 当遍历完所有层后,返回结果列表。

时间复杂度

此算法的时间复杂度为 (O(n)),其中 (n) 是树中节点的数量。因为每个节点只会被访问一次。

总结

这段代码通过层序遍历来获取每层的最右侧节点,从而实现了从右侧观察二叉树的效果。最终结果列表中按顺序保存了从上到下每一层的最右侧节点值,符合题目要求。

http://www.mmbaike.com/news/72364.html

相关文章:

  • 网站优化的基本思想与原则长沙百度推广开户
  • 外贸俄罗斯俄语网站制作如何做好搜索引擎优化工作
  • 网站专题模板seo快速软件
  • 工程公司有哪些职位班级优化大师免费下载app
  • 做动漫短视频网站安卓优化大师最新版下载
  • js做网站跳转信息流广告怎么投放
  • 百度外包公司有哪些知乎推广优化
  • 网络有限公司经营范围有哪些西安网站seo技术
  • 免费织梦网站源码长春网站建设方案报价
  • 学编程需要英语基础吗seo提升关键词排名
  • 濉溪县最新通告今天厦门站长优化工具
  • 用凡科做网站好弄吗品牌营销策划公司哪家好
  • 移动局域网ip做网站成都网站改版优化
  • 成立一个做网站的公司百度怎么免费推广
  • 最权威的做网站设计哪家好软文营销网
  • 乡镇网站建设和培训指数函数图像
  • 天津哪家做网站好西安seo包年服务
  • react 做网站百度竞价包年推广公司
  • 潍坊网站建设 潍坊做网站网站流量查询站长之家
  • 莒县做网站和微信百度广告联盟价格
  • wordpress网站首页电商中seo是什么意思
  • 新手如何建站seo搜索优化公司排名
  • 西宁网站优化公司推广方法有哪些
  • 网站备案连接怎么做seo是什么意思新手怎么做seo
  • 网站备案要关多久百度开户代理公司
  • 苏州专业做网站公司哪家好苏州排名搜索优化
  • 宜选网的网站是什么做的黄冈网站推广软件
  • 仙游网站建设公司公司网站制作公司
  • 一个网站需要怎么做百度如何优化排名靠前
  • 网站建设项目预算表清博大数据舆情监测平台