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

烟台电子商务网站建设整合营销策划方案

烟台电子商务网站建设,整合营销策划方案,济南做网站优化,行远金华网站建设公司1.问题 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: []…

1.问题

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

示例 1:

在这里插入图片描述

输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

示例 2:

输入: [1,null,3]
输出: [1,3]

示例 3:

输入: []
输出: []

提示:

  • 二叉树的节点个数的范围是 [0,100]
  • -100 <= Node.val <= 100

2.解题思路

经历过前面几篇关于二叉树的层序遍历算法之后(参见102.二叉树的层序遍历,107.二叉树的层序遍历II),非常容易的就可以通过这种算法解答此题,基本思想就是围绕队列性质,广度优先算法解决。当然,深度优先算法也是可以解决的。

2.1 广度优先(BFS)

利用队列,遍历每层节点,并记录每层最后一个元素,直到遍历完最后一层,即可得到结果。访问顺序如下图所示:
在这里插入图片描述
红色结点自上而下组成答案,边缘以访问顺序标号。
复杂度

  • 时间复杂度: O(N),每个节点都入队出队了 1 次。
  • 空间复杂度: O(N),使用了额外的队列空间。

2.2 深度优先(DFS)

1)优先访问右子树,即访问顺序为:根-右-左;
2)如果当前节点所在深度还没有出现在res里(因为一层就一个节点),说明在该深度下当前节点是第一个被访问的节点,因此将当前节点加入res中。

if len(res) < depth:res.append(root.val)
# 遍历右子树
if root.right:dfs(root.right, depth + 1, res)
# 遍历左子树
if root.left:dfs(root.left, depth + 1, res)

复杂度

  • 时间复杂度: O(N),每个节点都访问了 1 次。
  • 空间复杂度: O(N),因为这不是一棵平衡二叉树,二叉树的深度最少是 logN, 最坏的情况下会退化成一条链表,深度就是N,因此递归时使用的栈空间是 O(N) 的。

3.代码

/*** 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 {/**广度优先1.利用层序遍历思想,统计每层最后一个元素,即为答案2.分层标识*/public List<Integer> rightSideView2(TreeNode root) {//空节点if(null==root){return new ArrayList<>();}List<Integer> res=new ArrayList();//每层的遍历结果集List<Integer> tmp=new ArrayList();TreeNode node;//队列Queue<TreeNode> q=new LinkedList();//入队q.add(root);//分层标识q.add(null);while(!q.isEmpty()){node=q.poll();if(null!=node){tmp.add(node.val);//左右子树入队if(null!=node.left){q.add(node.left);}if(null!=node.right){q.add(node.right);}}//否层,该层遍历完毕else{if(!tmp.isEmpty()){//收集每层最后一个元素res.add(tmp.get(tmp.size()-1));tmp=new ArrayList();q.add(null);}}}return res;}//深度优先,递归public List<Integer> rightSideView(TreeNode root) {//判空if(null==root){return new ArrayList();}List<Integer> res=new ArrayList();dfs(root, 0, res);return res;}private void dfs(TreeNode root, int depth, List<Integer> res){if(res.size()==depth){res.add(root.val);}//左右子树,先遍历右子树,然后左子树if(null!=root.right){dfs(root.right, depth+1, res);}if(null!=root.left){dfs(root.left, depth+1, res);}}
}
http://www.ds6.com.cn/news/103659.html

相关文章:

  • 网站建设营销方案营销型网站建设模板
  • 国内做的好看的网站设计怎么在网上做广告宣传
  • 厦门网站建设公司seo 排名 优化
  • 网站建设 域名业务 邮箱直销怎么做才最快成功
  • 品牌策划公司简介win10优化大师官网
  • 中国各大网站网络营销方式有哪些?
  • 网站开发命名规则池州网络推广
  • 射洪网站建设疫情最新消息
  • 用asp.net做的网站模板经典广告推广词
  • 江苏企业网站建设价格智慧软文发稿平台
  • 网站建设800元全包网站优化入门免费教程
  • 帮建网站的人百度客服怎么转人工电话
  • 石家庄高端网站制作黄冈便宜的网站推广怎么做
  • 银川网站建设095151网站统计
  • 做服装行业网站惠州百度关键词优化
  • 360安全网址营销推广seo
  • 维度网络专业做网站西安seo关键词排名
  • 石家庄网站优化百度高搜
  • 厦门正规网站建设公司下载百度导航最新版本
  • 网站建设的软文怎么写无线网络优化是做什么的
  • 网络站点推广的方法有哪些百度后台登录
  • 网站设计字体大小规范最新中高风险地区名单
  • 网页制作做网站左侧导航重庆seo整站优化方案范文
  • 怎样做网站吸引人微商店铺怎么开通
  • 云网站建设东莞网站制作公司联系方式
  • 个人网站备案需要多久外贸网站推广seo
  • 如何做中介网站公司网站建设方案
  • 北京海淀网站制作公司响应式网站模板的特点
  • 焦作市建设工程网站软文范例大全800字
  • 万维建设网站大数据营销精准营销