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

建网站买什么主机东莞常平隐贤山庄门票多少

建网站买什么主机,东莞常平隐贤山庄门票多少,广州安全教育平台登陆,禹城市住房和城乡建设局网站一、问题描述 给定一个二叉树的根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例1: text 输入:root [1,2,3,null,5,null,4] 输出:[1,3,4] 解释&#xff1…

一、问题描述

给定一个二叉树的根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例1:

text

输入:root = [1,2,3,null,5,null,4]
输出:[1,3,4]
解释:1/ \2   3\   \5   4
从右侧看可以看到1, 3, 4

示例2:

text

输入:root = [1,2,3,4,null,null,null,5]
输出:[1,3,4,5]
解释:1/ \2   3/     4      /5
从右侧看可以看到1, 3, 4, 5

二、问题分析

二叉树的右视图就是从右侧观察树时能看到的节点序列。经过分析可以发现:

  1. 每层最右边的节点构成右视图

  2. 需要按从上到下的顺序输出这些节点

  3. 空树返回空列表

三、BFS解法(层序遍历)

3.1 基本思路

使用广度优先搜索(BFS)进行层序遍历,记录每层最后一个节点。

3.2 代码实现

java

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 levelSize = queue.size();for (int i = 0; i < levelSize; i++) {TreeNode node = queue.poll();// 记录每层最后一个节点if (i == levelSize - 1) {result.add(node.val);}if (node.left != null) queue.offer(node.left);if (node.right != null) queue.offer(node.right);}}return result;}
}

3.3 复杂度分析

  • 时间复杂度:O(n),每个节点访问一次

  • 空间复杂度:O(n),队列存储节点

3.4 优化版本

java

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 levelSize = queue.size();TreeNode lastNode = null;for (int i = 0; i < levelSize; i++) {lastNode = queue.poll();if (lastNode.left != null) queue.offer(lastNode.left);if (lastNode.right != null) queue.offer(lastNode.right);}if (lastNode != null) result.add(lastNode.val);}return result;}
}

四、DFS解法(深度优先搜索)

4.1 基本思路

使用深度优先搜索(DFS),优先访问右子树,记录每层第一个访问到的节点。

4.2 代码实现

java

class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> result = new ArrayList<>();dfs(root, 0, result);return result;}private void dfs(TreeNode node, int depth, List<Integer> result) {if (node == null) return;// 当深度等于结果列表大小时,说明是这一层第一个访问的节点if (depth == result.size()) {result.add(node.val);}// 先右后左,确保先访问右子树dfs(node.right, depth + 1, result);dfs(node.left, depth + 1, result);}
}

4.3 复杂度分析

  • 时间复杂度:O(n),每个节点访问一次

  • 空间复杂度:O(h),递归栈空间,h为树高

五、两种解法的比较

特性BFS解法DFS解法
实现方式迭代+队列递归/栈
空间复杂度O(n)O(h)
适用场景树宽较大时树深较大时
代码复杂度中等简单
访问顺序按层访问深度优先

六、边界情况测试

  1. 空树测试

java

TreeNode root = null;
assert rightSideView(root).isEmpty();
  1. 只有左子树

java

//   1
//  /
// 2
TreeNode root = new TreeNode(1, new TreeNode(2), null);
assert rightSideView(root).equals(Arrays.asList(1, 2));
  1. 只有右子树

java

// 1
//  \
//   2
TreeNode root = new TreeNode(1, null, new TreeNode(2));
assert rightSideView(root).equals(Arrays.asList(1, 2));
  1. 完全二叉树

java

//     1
//    / \
//   2   3
//  / \ / \
// 4  5 6 7
TreeNode root = new TreeNode(1,new TreeNode(2, new TreeNode(4), new TreeNode(5)),new TreeNode(3, new TreeNode(6), new TreeNode(7)));
assert rightSideView(root).equals(Arrays.asList(1, 3, 7));

七、常见问题解答

Q1:为什么DFS解法要先访问右子树?

A1:因为我们要找每层最右边的节点,先访问右子树可以确保每层第一个访问到的节点就是最右边的节点。

Q2:BFS解法中如何确定是每层最后一个节点?

A2:在层序遍历中,当处理到当前层的最后一个节点时(i == levelSize - 1),将其加入结果列表。

Q3:如何处理空树的情况?

A3:在函数开始时检查root是否为null,如果是直接返回空列表。

八、总结与扩展

本文详细讲解了二叉树右视图问题的两种解法:BFS和DFS。两种方法各有优缺点,适用于不同场景:

  1. BFS更直观,适合处理层相关的问题

  2. DFS代码更简洁,空间效率更高

扩展思考

  1. 如何实现二叉树的左视图?(提示:修改访问顺序)

  2. 如何同时输出左右视图?

  3. 对于N叉树,如何实现右视图?

希望这篇文章能帮助你彻底理解二叉树右视图问题。如果有任何疑问或建议,欢迎在评论区留言讨论!


文章转载自:

http://vuAThBXR.xbnkm.cn
http://AqAyHsvk.xbnkm.cn
http://TS0AA0vA.xbnkm.cn
http://D10cJGyJ.xbnkm.cn
http://LEy0VqSH.xbnkm.cn
http://g1PEDeuE.xbnkm.cn
http://CPIwSgKU.xbnkm.cn
http://gETEcyTl.xbnkm.cn
http://yUjgkqpT.xbnkm.cn
http://IN1P52o5.xbnkm.cn
http://Uaw6wwBh.xbnkm.cn
http://mFO4C1yg.xbnkm.cn
http://5KPyYDvc.xbnkm.cn
http://khJNOoxH.xbnkm.cn
http://RWGamvij.xbnkm.cn
http://SoCuF9bR.xbnkm.cn
http://CdIYsfky.xbnkm.cn
http://IIK9aBpR.xbnkm.cn
http://8kKJPWDw.xbnkm.cn
http://oPWBHyfB.xbnkm.cn
http://L1eiZU0v.xbnkm.cn
http://qSzKqX4J.xbnkm.cn
http://zxSPekWU.xbnkm.cn
http://qfMIQNQy.xbnkm.cn
http://C7Xd15dF.xbnkm.cn
http://ZqqZ7Mrl.xbnkm.cn
http://uCr55Qwv.xbnkm.cn
http://Ds0Svb60.xbnkm.cn
http://KyTXdVzI.xbnkm.cn
http://FgFYPBLT.xbnkm.cn
http://www.dtcms.com/wzjs/650978.html

相关文章:

  • 网站改版建设主要电商平台建设
  • 白山建设局网站云南省网站开发公司
  • 专业制作网站的公司哪家好西安最新活动轨迹
  • 天津泰达建设集团有限公司网站电子制作diy
  • 微网站建设市场国内永久免费crm游戏
  • 台州seo网站排名wordpress 技术类模板下载
  • asp做招聘网站流程天津飞机模型制作公司
  • dedecms网站地图插件安全的企业网站开发
  • 番禺电商网站建设seo学院培训班
  • 网站推广的具体方法软件下载
  • 门户网站系统开发如何推广平台
  • 常州网站建设多少钱一般的学校网站怎么做
  • 设计师网站接单网站制作简单协议
  • 网站管理员可控的关键节点微信小程序网站建设哪家好
  • 银行门户网站建设艺术品交易网站开发
  • 网站图片大小优化网站语言版本
  • 网站自然排名往后掉推荐个临汾做网站的
  • 成品网站免费下载飓风seo刷排名软件
  • 郑州旅游网站搭建wordpress post date
  • 宁波网站优化方案品牌网站建设相关问题
  • 网站建设与网页设计开题报告如何将网站提交到搜索引擎
  • 扬中网站推广托管wordpress 安装路径
  • 南坪做网站搜狗seo刷排名软件
  • 零食店网站构建策划报告免费发布信息平台有哪些
  • 安徽外贸网站建设推广普通话手抄报内容文字
  • 企业网站的步骤一个wordpress的爱好者
  • html5制作网站谁的好美工培训班一般培训多久
  • ppt免费模板下载网站有哪些政务网站建设信息
  • 文化网站建设wordpress主题代码编辑教程
  • 烟台网站设计单位网站做搜索关键字好吗