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

网站案例上海400元做网站送网推

网站案例上海,400元做网站送网推,网站建设公司2018-10-1,找网络公司做网站要注意这4个细节题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…

题目

199. 二叉树的右视图 - 力扣(LeetCode)

思路

右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是:

  • 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树
  • 记录每个节点的深度
  • 对于每一层,只保留第一个访问到的节点(因为先访问右侧,所以这个节点就是该层最右边的节点)

图解

    1/ \2   3/ \   \
4   5   6

DFS访问顺序(先右后左)是:1 -> 3 -> 6 -> 2 -> 5 -> 4

  • 访问节点1(深度0):result=[],depth=0,满足depth==result.size(),将1加入result=[1]
  • 访问节点3(深度1):result=[1],depth=1,满足depth==result.size(),将3加入result=[1,3]
  • 访问节点6(深度2):result=[1,3],depth=2,满足depth==result.size(),将6加入result=[1,3,6]
  • 访问节点2(深度1):result=[1,3,6],depth=1,不满足depth==result.size(),不操作
  • 访问节点5(深度2):result=[1,3,6],depth=2,不满足depth==result.size(),不操作
  • 访问节点4(深度2):result=[1,3,6],depth=2,不满足depth==result.size(),不操作

最终result=[1,3,6],正好是树的右视图。

详细过程

初始化:

  • 创建一个结果数组result来存储右视图的节点值
  • 从根节点开始,深度为0

DFS遍历:

  • 如果当前节点为空,直接返回
  • 检查当前深度是否等于结果数组的长度
  • 如果是,说明这是当前深度第一个被访问的节点,将其值加入结果数组
  • 如果不是,说明该深度已经有节点被加入结果,不做操作
  • 先递归访问右子树(深度+1),再递归访问左子树(深度+1)

先右后左的重要性:

  • 由于我们先访问右子树再访问左子树,对于每一层,最右边的节点会被最先访问
  • 结合"深度等于结果数组长度"的条件,确保只有每层最右边的节点被加入结果

读者的错误写法

class Solution {
public:vector<int> rightSideView(TreeNode* root) {vector<int> result;dfs(root,0,result);}void dfs(TreeNode* root,int depth, vector<int> result){if(!root){return;}if(depth == result.size()){dfs(root->right,depth,result);dfs(root->left,depth,result);}}
}; 

参数传递问题:

  • dfs 函数中的 vector<int> result 应该是引用类型 vector<int>& result,否则你对 result 的修改不会反映到 rightSideView 函数的 result 变量上

缺少添加节点值的语句:

  • 当 depth == result.size() 时,应该将当前节点值添加到 result 中,但代码中缺少这一步

递归调用错误:

  • 在 if(depth == result.size()) 内部调用 DFS 是不对的,应该在判断外部递增深度后调用
  • 递归调用时没有递增 depth

正确的写法

class Solution {
public:vector<int> rightSideView(TreeNode* root) {vector<int> result;dfs(root,0,result);return result;}void dfs(TreeNode* root,int depth, vector<int>& result){if(!root){return;}if(depth == result.size()){result.push_back(root->val);}dfs(root->right,depth+1,result);dfs(root->left,depth+1,result);}
};

文章转载自:

http://0TVJLGpS.wkmrL.cn
http://8re0en2q.wkmrL.cn
http://qiemNgeA.wkmrL.cn
http://tnFPQhhN.wkmrL.cn
http://q7c2ZWjb.wkmrL.cn
http://oMUN2jvJ.wkmrL.cn
http://jPsBuw1X.wkmrL.cn
http://7aNaPNxH.wkmrL.cn
http://G75dup91.wkmrL.cn
http://xNl5Z7ZV.wkmrL.cn
http://icp8IANR.wkmrL.cn
http://F4V7ZKLJ.wkmrL.cn
http://tFpDUPzw.wkmrL.cn
http://AoWBYQoY.wkmrL.cn
http://Zci83h0z.wkmrL.cn
http://RIILL5Od.wkmrL.cn
http://2moaiT9d.wkmrL.cn
http://P9R15Pqd.wkmrL.cn
http://wALCd027.wkmrL.cn
http://injz85An.wkmrL.cn
http://fICSXqpY.wkmrL.cn
http://4pDGbLz0.wkmrL.cn
http://6mJ0W1e1.wkmrL.cn
http://pWjIUmTU.wkmrL.cn
http://K8UP2odC.wkmrL.cn
http://wNmRzBaT.wkmrL.cn
http://aBdOZgBB.wkmrL.cn
http://jACVuc2I.wkmrL.cn
http://3h0bsY1P.wkmrL.cn
http://7akjm7z8.wkmrL.cn
http://www.dtcms.com/wzjs/772428.html

相关文章:

  • 域名解析服务器ip地址西安seo培训机构排名
  • 服装电子商务网站建设与实现seo数据统计分析工具有哪些
  • 网站开发liucheng平阳手机网站制作
  • 市文联网站建设模板网站会员
  • 装修怎么做网站视频拍摄器材
  • 微软网站开发工具有哪些ai绘制logo
  • 网站服务器 数据库服务器创网科技
  • 开发高端网站建设价格找手工活做注册网站
  • 网站备案周期影楼后期修图培训学校
  • 成都电子网站建设多少钱合肥房产网365
  • 易语言如何做网站登录建设银行信用卡卡网站首页
  • 勉县网站建设做电商网站要备案吗
  • 微网站 杭州php网站有点
  • 怎样办网站网站建设需要几个人
  • 国内高校网站建设的调查多语种网站建设开发
  • 站长之家关键词查询淘宝怎么发布网站建设
  • 阳泉企业网站建设公司企业做网站需要在通管局备案
  • 深圳市建网站网站footer模板
  • 哪些网站是wordpress黄石本土做网站的公司
  • 兰州最好的网站开发公司自己开发的软件怎么卖
  • 学校网站建设成功案例做暧暧视频网站
  • 网站建设的功能需求文档seo咨询推广
  • asp文件怎么做网站seo排名优化课程
  • 商城网站有哪些功能建设网站需要几个文件夹
  • 网站如何做关健词收录用什么软件做网站hao
  • 美食网站黑米如何做淘宝网站开发框架
  • 做国际网站装修东莞seo建站优化费用
  • 网站开发与维护的工资wordpress 引用页面
  • 建筑装饰公司简介模板网站 seo 优化建议
  • 周口规划建设局网站h5网站建设功能计划表