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

网页制作网站的大作业宜昌seo优化

网页制作网站的大作业,宜昌seo优化,施工企业成本管理制度,云服务平台剑指Offer(数据结构与算法面试题精讲)C版——day15 题目一:二叉树最低层最左边的值题目二:二叉树的右侧视图题目三:二叉树剪枝附录:源码gitee仓库 题目一:二叉树最低层最左边的值 题目&#xff…

剑指Offer(数据结构与算法面试题精讲)C++版——day15

      • 题目一:二叉树最低层最左边的值
      • 题目二:二叉树的右侧视图
      • 题目三:二叉树剪枝
      • 附录:源码gitee仓库

题目一:二叉树最低层最左边的值

    题目:如何在一棵二叉树中找出它最低层最左边节点的值?假设二叉树中最少有一个节点。例如,在如图7.5所示的二叉树中最低层最左边一个节点的值是5。
在这里插入图片描述
    这道题就比较方便了,结合前面剑指Offer(数据结构与算法面试题精讲)C++版——day14里面提到的使用层序遍历以及利用qu.size()对每一层进行拆分。这样我们就能够获取每一层的所有节点,只需要在遍历的时候统计该层数据的第一个,用一个变量存储,直到遍历面整个动态队列,最终得到的结果就是最终想要的最后的结果了,得到如下代码:

int getLeftCorner(treeNode * tree) {queue<treeNode *> qu;treeNode * p;int leftCorner=-1;if(!tree)return -1;qu.push(tree);while(!qu.empty()) {for(int i=0,size=qu.size(); i<size; ++i) {p=qu.front();qu.pop();if(i==0) {leftCorner=p->val;}if(p->left) {qu.push(p->left);}if(p->right) {qu.push(p->right);}}}return leftCorner;
}

在这里插入图片描述

题目二:二叉树的右侧视图

    题目:给定一棵二叉树,如果站在该二叉树的右侧,那么从上到下看到的节点构成二叉树的右侧视图。例如,图7.6中二叉树的右侧视图包含节点8、节点10和节点7。请写一个函数返回二叉树的右侧视图节点的值。
在这里插入图片描述
    这里首先需要明确右视图的含义,根据题意和示例,可以得到右视图指的是从右往左看,站在层序遍历的角度,所看到的数据就是右视图。我们立刻可以想到这里依旧可以使用层序遍历,加上前面提到的qu.size(),拿到每一层的元素,这一次只存储最后一个元素,最后拿到的结果就是想要的右视图结果了,对应的代码如下:

void getRightView(treeNode * tree,vector<int> &vec) {queue<treeNode *> qu;treeNode * p;if(!tree)return ;qu.push(tree);while(!qu.empty()) {for(int i=0,size=qu.size(); i<size; ++i) {p=qu.front();qu.pop();if(i==size-1){vec.push_back(p->val);} if(p->left) {qu.push(p->left);}if(p->right) {qu.push(p->right);}}}
}

在这里插入图片描述

题目三:二叉树剪枝

    题目:一棵二叉树的所有节点的值要么是0要么是1,请剪除该二叉树中所有节点的值全都是0的子树。例如,在剪除图8.2(a)中二叉树中所有节点值都为0的子树之后的结果如图8.2(b)所示。
在这里插入图片描述
    由题意可知,因为当一个节点本身为0并且其左右子节点都是空的情况下,这个节点需要被裁剪掉,接下来需要分析被删除的这个节点的右侧兄弟节点,如果右侧兄弟节点也需要被删除的话,那么紧接着需要判断删除之后左右兄弟节点的父节点是否需要删除,如果父节点为0,那么由于刚才其左右孩子节点已经被删除过,那么父节点也需要删除。我们分析可以得到,这种扫描过程恰好是后续遍历的扫描过程,因此我们可以站在后序遍历的基础上去检测节点,如果该节点满足了值为0并且左右孩子为空,那么可以直接将这个节点设置为空。于是得到如下代码:

treeNode* clearTree(treeNode * tree) {if(tree==nullptr) {return nullptr;} else {tree->left=clearTree(tree->left);tree->right=clearTree(tree->right);if(!tree->left&&!tree->right&&!tree->val) {free(tree);tree=nullptr;}}return tree;
}

在这里插入图片描述

附录:源码gitee仓库

    考虑到有些算法需要模拟数据,如果全部放进来代码显得过长,不利于聚焦在算法的核心思路上。于是把所有的代码整理到了开源仓库上,如果想要看详细模拟数据,可在开源仓库自取:【凌空暗羽/剑指offer-C++版手写代码】。

    我是【Jerry说前后端】,本系列精心挑选的算法题目全部基于经典的《剑指 Offer(数据结构与算法面试题精讲)》。在如今竞争激烈的技术求职环境下,算法能力已成为前端开发岗位笔试考核的关键要点。通过深入钻研这一系列算法题,大家能够系统地积累算法知识和解题经验。每一道题目的分析与解答过程,都像是一把钥匙,为大家打开一扇通往高效编程思维的大门,帮助大家逐步提升自己在数据结构运用、算法设计与优化等方面的能力。
    无论是即将踏入职场的应届毕业生,还是想要进一步提升自己技术水平的在职开发者,掌握扎实的算法知识都是提升竞争力的有力武器。希望大家能跟随我的步伐,在这个系列中不断学习、不断进步,为即将到来的前端笔试做好充分准备,顺利拿下心仪的工作机会!快来订阅吧,让我们一起开启这段算法学习之旅!

http://www.dtcms.com/wzjs/841375.html

相关文章:

  • 在windows2003上做网站厦门网站建设a
  • 音乐网站开发背景百度关键词搜索量排名
  • 网站建设做微营销目前比较火的外贸产品
  • 中山专业网站制作产品设计考研学校
  • 住房与城乡建设部网站打不开企业网站制作费做分录
  • 如何做电商带货网站建设优化河南
  • 做旅游网约车的网站做服装网站要那些照片
  • 中文域名网站有哪些桂林两江四湖门票多少钱
  • 做班级玩网站做哪些方面外包公司有哪些
  • 厦门网站个人制作网站制作的基本步骤
  • 北京王府井集团股份有限公司郑州网站优化外包顾问
  • 网站做图分辨率是多少求做图的网站
  • 哈尔滨网站建设1元钱网站团购活动页面怎么做
  • 西安 网站建设 培训学校防做电脑租赁网站
  • 义乌 外贸网站 开发如何查看网站外链
  • 本地的wordpress地址关键词优化推广排名软件
  • 中国手机网站大全南昌建筑行业网站开发
  • 如何创建属于自己的网站高清视频网络服务器免费
  • 适用于建设微型网站成都官网搭建公司
  • 张家港专业做网站网站建设制作专业
  • 域名备案网站服务内容这两天发生的重大新闻
  • 企业宣传网站建设制作投票链接哪家好厂商
  • 装饰协会网站源码网站建设 阿里
  • 音乐网站模板免费源码惠州网站制作定制
  • 萍乡企业网站建设手机网站如何建立
  • 网站整合营销建设大连市建设局网站
  • 上海有制作网站的电话吗网站后台页面进不去
  • seo发外链网站网站正在建设中永久
  • html网站开发工具下载做网站至少要花多少钱
  • lanyun网站开发网站建设技术发展趋势预测