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

网站建设公司做网站要多少费用创建自己的网站怎么弄

网站建设公司做网站要多少费用,创建自己的网站怎么弄,wordpress termmeta,胶州网站建设电话一、问题描述 给定一个二叉树的根节点 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://www.dtcms.com/wzjs/329871.html

相关文章:

  • 山东政府网站集约化建设seo的优化步骤
  • 莱芜网站推广重庆关键词seo排名
  • 工程建设招标网都有哪些网站网页设计和网站制作
  • 那个网站做创意图比较好优化大师win7官方免费下载
  • 网上接单做衣服哪个网站青岛做网站推广公司
  • 个人网站做导航网站推广平台排行榜
  • 常州网站建设费用网络营销与管理
  • 访问国外网站dns国外网站推广
  • 怎样去同行网站做外连接手机注册网站
  • 淘客网站开发视频教程网络营销的概念及特征
  • 网站宣传营销网络服务商主要包括
  • 网站seo属于什么专业查询网站域名
  • 个人做网站要注意什么条件网络营销的特点是什么?
  • 新闻最近的大事10件站长工具seo词语排名
  • 做和别人类似的网站侵权吗网站一般需要怎么推广
  • 俄罗斯代购网站设计百度网盘官网
  • 网站建设及报价方案seo引擎优化外包
  • 怎么做创业网站上海关键词排名提升
  • 手机网站模板 织梦网络推广和竞价怎么做
  • 哪个网站有介绍拿到家做的手工活慈溪seo
  • 合肥市科技中心网站北京seo网络优化招聘网
  • 套模版做网站产品市场推广方案范文
  • 交城有做网站的吗大数据营销成功案例
  • 网站开发需要什么配置电商卖货平台有哪些
  • 珠海建设网站官网2023能用的磁力搜索引擎
  • 有口碑的番禺网站建设传统营销与网络营销的整合方法
  • wordpress文章图片链接seo关键词排名优化哪家好
  • 网站建设基本流程信息技术外贸推广具体是做什么
  • 日照网站建设吧企业网站建设推广
  • 网站哪家做的比较好的网站怎么创建