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

做网站的是什么工程师搜索引擎的工作原理是什么

做网站的是什么工程师,搜索引擎的工作原理是什么,怎样登录韵网网站,永久免费云服务器无需注册前中后序遍历#xff08;DFS#xff09; 首先我们要明确前中后序遍历的顺序#xff1a; 前序#xff1a;中左右中序#xff1a;左中右后序#xff1a;左右中 前中后序遍历的递归代码和迭代代码分别有各自的框架#xff0c;然后根据遍历顺序调整记录元素的位置即可。 …前中后序遍历DFS 首先我们要明确前中后序遍历的顺序 前序中左右中序左中右后序左右中 前中后序遍历的递归代码和迭代代码分别有各自的框架然后根据遍历顺序调整记录元素的位置即可。 递归 class Solution { private:void postOrder(TreeNode* root, vectorint vec) {if (!root) return;postOrder(root-left, vec); // 1postOrder(root-right, vec);// 2vec.push_back(root-val); // 3} public:vectorint postorderTraversal(TreeNode* root) {vectorint res;postOrder(root, res);return res;} };前序遍历3-1-2中序遍历1-3-2后序遍历1-2-3 如前所述三种遍历的迭代方式很简单并且更改迭代方式只要调整记录元素的位置即可。 迭代 前序遍历 我们以前序遍历给出迭代版本的框架核心思想就是用栈。 class Solution { public:vectorint preorderTraversal(TreeNode* root) {vectorint res;stackTreeNode* S;TreeNode* node root;while (node || !S.empty()) {while (node) {res.push_back(node-val); // 注意S.push(node);node node-left;}node S.top(); S.pop();node node-right; }return res;} };中序遍历 与前序遍历的差别请看代码中的 注意调整了记录元素的位置。 class Solution { public:vectorint inorderTraversal(TreeNode* root) {if (!root) return {};vectorint res;stackTreeNode* S;TreeNode* curr root;while (curr || !S.empty()) {while (curr) {S.push(curr);curr curr-left;}TreeNode* node S.top();S.pop();res.push_back(node-val); // 注意curr node-right;}return res;} };后序遍历 注意到前序遍历的顺序为中左右而我们想要的后序遍历的顺序为左右中。我们可以先讲前序遍历代码中访问左右子树的顺序互换得到顺序为中右左再进行 reverse得到后序左右中。 class Solution { public:vectorint postorderTraversal(TreeNode* root) {if (!root) return {};vectorint res;stackTreeNode* S;S.push(root);while (!S.empty()) {TreeNode* node S.top();S.pop();res.push_back(node-val);if (node-left) S.push(node-left);if (node-right) S.push(node-right);}reverse(res.begin(), res.end());return res;} };层序遍历BFS 不需按深度划分 直接输出层序遍历序列不需按深度划分不同于 DFS 使用栈这里是用队。 class Solution { public:vectorint levelOrder(TreeNode* root) {if (!root) return {};queueTreeNode* Q;// vectorvectorint res;vectorint res;Q.push(root);while (!Q.empty()) {TreeNode* curr Q.front();res.push_back(curr-val);Q.pop();if(curr-left) Q.push(curr-left);if(curr-right) Q.push(curr-right);}return res;} }需要按深度划分 注意在不需要按深度划分的版本的基础上做些改变用 n 记录当前深度的节点的个数然后在 for 循环中将这 n 个节点保存到一个数组中下一层深度再用一个新数组保存从而达到按深度划分。 注意在本题的基础上修改可解决 LeetCode 中许多层序遍历的变种问题。 class Solution { public:vectorvectorint levelOrder(TreeNode* root) {if (!root) return {};vectorvectorint res;queueTreeNode* Q;Q.push(root);while (!Q.empty()) {vectorint vec;int n Q.size();for (int i0; in; i) {TreeNode* curr Q.front();Q.pop();vec.push_back(curr-val);if (curr-left) Q.push(curr-left);if (curr-right) Q.push(curr-right);}res.push_back(vec);}return res;} }Ref https://github.com/youngyangyang04/leetcode-master/blob/master/problems/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%AD%E4%BB%A3%E9%81%8D%E5%8E%86.md
http://www.pierceye.com/news/346026/

相关文章:

  • 第三方网站开发的商家厦门广告公司网站建设
  • 网站建设基础条件临猗网站制作
  • 建设博客网站步骤常州网站建设百科
  • 门户网站 管理系统wordpress 微信图标
  • 广元网站建设广元莱芜论坛二手车
  • 山东省建设工程质量监督网站广州软件合作中心
  • 郑州网站建设怎么样通州建设局网站
  • 免费网站建设福州怎么修改网站主页
  • 深圳企业建站设计公司wordpress不显示样式
  • 外贸网站商城广东省建设协会网站
  • 杭州制作企业公司网站wordpress数据库添加用户
  • 主域名进入网站广告标识标牌制作厂家
  • 网站建设基础流程摘要专题网站建设策划
  • 滁州网站建设电话网站建设与网站优化
  • 慈溪做网站公司哪家好淘宝商城的网站建设
  • 安徽建设厅网站怎么打不开太原网络搭建
  • idea 网站开发最好的免费推广平台
  • 专业排名优化网站怎么建网站教程视频app
  • 全国八大员报名官方网站支付宝小程序开发工具
  • 怎么查看vps网站服务器时间中国建设会计协会网站
  • 门户网站上的广告怎么做深圳服装网站建设
  • 公司网站上线的通知抚州营销型网站建设
  • 中国住房城乡和城乡建设部网站小广告文案
  • 做带字头像的网站wordpress 翻页设置
  • 网站横幅js代码公众号如何申请
  • 找网站建设需要问什么软件物联网平台功能
  • 含山县城市建设有限公司网站成都中高风险地区名单最新
  • 鄂州手机网站建设深圳seo网站设计
  • 网站内容的实现方式建筑设计人才招聘
  • 网站做优化效果怎样iis怎么做网站空间