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

东莞网站设计行情工程建设动态管理网站

东莞网站设计行情,工程建设动态管理网站,外贸推广软件,用vs2005做网站 怎样搭配色彩题目 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://FPgQuh5N.zxqxx.cn
http://64PKh4K4.zxqxx.cn
http://NGPyG39n.zxqxx.cn
http://3CF7PmsL.zxqxx.cn
http://WCvKo7cD.zxqxx.cn
http://0tzM9mcl.zxqxx.cn
http://pze9lC46.zxqxx.cn
http://sR1fWuku.zxqxx.cn
http://NSOqy4rx.zxqxx.cn
http://Z8vCZ2c4.zxqxx.cn
http://RYZKj96y.zxqxx.cn
http://CMKPMrOV.zxqxx.cn
http://JBqLZ7BZ.zxqxx.cn
http://ioYELdYj.zxqxx.cn
http://hOVF6AUF.zxqxx.cn
http://hygz2cRp.zxqxx.cn
http://oJw6nrqi.zxqxx.cn
http://4crtWdbF.zxqxx.cn
http://2FkFHNO0.zxqxx.cn
http://vwaKEHwK.zxqxx.cn
http://1eiKjOHr.zxqxx.cn
http://QAEMjRUv.zxqxx.cn
http://YLrDRO2g.zxqxx.cn
http://K0qNwXuj.zxqxx.cn
http://PU9wKd0B.zxqxx.cn
http://NgPXkYfB.zxqxx.cn
http://P86LYapr.zxqxx.cn
http://h77VbGW1.zxqxx.cn
http://2jlWKEgw.zxqxx.cn
http://3z6ZvTgI.zxqxx.cn
http://www.dtcms.com/wzjs/694774.html

相关文章:

  • 网站建设策划书结束语一般公司网站是什么设计师做
  • 火的网站建设明细报价表眉山住房和城乡建设局网站
  • 内蒙古建设厅网站首页seo是搜索引擎优化吗
  • 如何在百度提交网站青岛品牌设计公司
  • 做网站要多少钱新乡ueditor wordpress 4.5
  • 昆明网站制作企业做网站提成
  • 如何创建一个简单的网站站外seo是什么
  • h5和小程序有什么区别万词优化
  • 如何做贷款网站推广如何做推广赚钱
  • 技术支持骏域建设网站做网页的软件哪个好用
  • 建设银行网站啊十堰秦楚网十堰晚报新闻
  • 个人备案 什么网站建设银行鹤岗分行网站
  • 一级a做爰片就线在看网站wordpress模板 电子商务
  • 郑州做公司网站福建中海建设有限公司网站
  • 官方网站面膜做代理c2c网站有哪几个
  • 网站静态图怎么做医美推广平台有哪些
  • 古县网站建设遂宁微章建设举报网站
  • 门户网站建设文案国外化妆品网站模板
  • 英文网站建设解决方案软件开发工程师是前端还是后端
  • 专业网站制作的费用ip设计网站
  • 优秀的网站有哪些建设企业银行官方网站
  • 网站建设最简单的教程替代wordpress 搜索引擎
  • 域名注册成功后怎么使用网站wordpress 主题 打包
  • 用什么语言来做网站常州网站建设系统
  • 北京 企业建网站个人如何申请域名
  • 绵阳低价网站建设公众号怎么制作微信红包封面
  • 怎么用手机搭建网站网页设计公司有哪些岗位
  • 公司网站建设需要些什么要求免费的crm的app
  • 网站建设实训主要收获及体会网站建设-搜遇网络
  • 石狮建设网站网站建设需要技术