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

网站开发项目描述网页开发三件套

网站开发项目描述,网页开发三件套,贵阳网站搜索优化,网站跟app区别Problem: 199. 二叉树的右视图 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 无论是DFS还是BFS我们都要思考到达二叉树的每一层#xff08;或者每一层中的每一个节点#xff09;时#xff0c;我们都该如何按题目要求做出对应得处理!!!在本体中我们主要是#x… Problem: 199. 二叉树的右视图 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 无论是DFS还是BFS我们都要思考到达二叉树的每一层或者每一层中的每一个节点时我们都该如何按题目要求做出对应得处理!!!在本体中我们主要是 1.当右子树与左子树等高或者右子树高于左子树时我们只添加每一个右子树得右节点到结果集根节点得左子树整个都去除 2.当左子树高于右子树时我们将等高得部分按1中处理左子树高出右子树得部分再将其右子树得右节点添加到结果集 解题方法 思路1DFS 1.创建unordered_mapint, int rightmostValueAtDepth;记录每一层应该添加到右视图的节点int maxDepth -1;记录并维护当前的最大深度stackTreeNode nodeStack;用于DFS过程中的存储节点stack depthStack;用于同时记录DFS过程中的树的深度 2.将根节点添加到nodeStack中while循环遍历循环退出条件为nodeStack为空每次弹出nodeStack和depthStack中的栈顶元素node与depth若此时node不为空则更新最大深度同时若rightmostValueAtDepth[depth]不存在则添加到rightmostValueAtDepth中*并且将node - left;node - rightdepth 1;depth 1分别添加到对应的nodeStack和depthStack栈 3.最后将rightmostValueAtDepth中的值添加到一个一维数组中即可 思路2BFS 大体实现直接套用BFS代码的模板书写即可具体解释下面代码实现中的两个点 1.由于常规的BFS模板均是先添加左子树节点到队列再添加右子树节点到队列所以我们可以利用数组元素可以覆盖的特性在每次添加节点到队列时也将该节点值放入一个空间大小为1的数组temp中这样操作后无论是思路中1、2哪种情况都能保证最后添加到结果集中的节点值是复合题目右视图这个定义 2.按常规BFS代码的实现或者说就是按下面代码前面部分的操作会导致最后一个被写到temp数组中的元素会添加两次到最终的结果集中所以要push_back一次!!! 复杂度 思路1、2均如下 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code 思路1 class Solution { public:/*** DFS** param root The root of a binary tree* return vectorint*/vectorint rightSideView(TreeNode *root) {if (root nullptr) {return {};}unordered_mapint, int rightmostValueAtDepth;int maxDepth -1;stackTreeNode * nodeStack;stackint depthStack;nodeStack.push(root);depthStack.push(0);while (!nodeStack.empty()) {TreeNode *node nodeStack.top();nodeStack.pop();int depth depthStack.top();depthStack.pop();if (node ! nullptr) {//Maintain the maximum depth of a binary treemaxDepth max(maxDepth, depth);//If not in the map collection, add itif (rightmostValueAtDepth.find(maxDepth) rightmostValueAtDepth.end()) {rightmostValueAtDepth[depth] node-val;}nodeStack.push(node-left);nodeStack.push(node-right);depthStack.push(depth 1);depthStack.push(depth 1);}}vectorint res;for (int i 0; i maxDepth; i) {res.push_back(rightmostValueAtDepth[i]);}return res;} }; 思路2 class Solution { public:/*** BFS* * param root The root of a binary tree* return vectorint*/vectorint rightSideView(TreeNode* root) {if (root nullptr) {return {};}if (root - left nullptr root - right nullptr) {return {root - val};}vectorint res;vectorint temp(1);queueTreeNode* queue;res.push_back(root - val);queue.push(root);while (!queue.empty()) {int curLevelSize queue.size();for (int i 0; i curLevelSize; i) {TreeNode* curLevelNode queue.front();queue.pop();if (curLevelNode - left ! nullptr) {temp[0] curLevelNode - left - val;queue.push(curLevelNode - left);}if (curLevelNode - right ! nullptr) {temp[0] curLevelNode - right - val;queue.push(curLevelNode - right);}}res.push_back(temp[0]);}//Pop the last repetitive noderes.pop_back();return res;} };
http://www.dnsts.com.cn/news/39382.html

相关文章:

  • 个人信息管理网站建设如何做好区县外宣网站建设
  • 南通中小企业网站制作手机端网站seo
  • 收录网站有哪些花生棒 做网站
  • 有哪些可以接单做任务的网站免费空间 wordpress
  • 上海网站建设找缘魁电商培训心得体会
  • 电商网站有什么福州科技网站建设怎么做
  • 网站怎么查是哪家网络公司做的苏州建网站哪个好
  • 河北精品网站建设国外特效网站
  • wap网站快速开发建设银行手机银行电脑版官方网站
  • 做网站包含微信公众号吗潮汕学院网站开发
  • 蚌埠网站优化制作公司奉贤建设机械网站
  • 营口网站建设哪家好建立网站的正确方法
  • 新闻发布网站模板伦敦做网站
  • 广州h5网站制作公司万网cname域名解析
  • 做一手房做那个网站好广东联通通信建设有限公司 网站
  • 响应式网站开发需要的条件搜索引擎是指什么
  • 快速整站排名seo教程一键生成图片
  • 建设银行客户投诉网站网站自身维护
  • 嘉兴网站广优化公司巩义市住房和城乡规划建设局网站
  • 网站设计中的js扬州网站建设 天维
  • 机关网站建设工作总结个人简历模板可编辑免费
  • 手机网站加百度商桥嘉兴手机模板建站
  • 苏州制作网站哪家好app活动推广策划方案
  • 鞍山公司做网站wordpress 远程图片
  • 网站合同建设模板DW做的网站怎么弄兼容性
  • 重庆商城网站建设公司山东网站seo设计
  • html5建设的网站wordpress 七牛 上传
  • 做网站和做推广有什么区别中国化学工程第六建设有限公司
  • 音乐网站设计源码千牛网站上的店铺推广怎么做
  • 赣州网站建设专家印象庆阳网