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

电子商务工资多少钱一个月如何获取网站的seo

电子商务工资多少钱一个月,如何获取网站的seo,如何快速建站,WordPress搜索插件主题文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析#xff1a;首先看这道题的输出结果#xff0c;是前序遍历。然后需要找到从根节点到叶子节点的所有路径#xff… 文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析首先看这道题的输出结果是前序遍历。然后需要找到从根节点到叶子节点的所有路径涉及回溯因此很容易想到用递归回溯的方法前序遍历按中左右顺序访问节点在访问完左节点后返回中节点接着返回右节点。递归法有三个要素 1.输入参数和返回值输入参数为根节点递归的时候就是中间节点单个路径以及结果数组。2.终止条件遇到叶子节点就终止同时将path中的节点按要求连接成字符串插入结果数组。3.单层递归逻辑如果左/右节点不为空则递归左/右节点递归结束后需要删除左/右节点因为已经遍历过了换一个路径然后进行下一个递归这个操作就是回溯。   程序如下 class Solution { public:// 前序遍历递归法/回溯法 void traversal(TreeNode* root, vectorint path, vectorstring result) { // 1.输入参数和返回值 path.push_back(root-val); // 中间节点先加入pathif (!root-left !root-right) { // 2.终止条件遇到叶子节点string spath;for (int i 0; i path.size() - 1; i) {spath to_string(path[i]);spath -;}spath to_string(path[path.size() - 1]);result.push_back(spath);return;}// 3.单层递归逻辑if (root-left) {traversal(root-left, path, result); // 递归path.pop_back(); // 回溯}if (root-right) {traversal(root-right, path, result);path.pop_back();}}vectorstring binaryTreePaths(TreeNode* root) {vectorstring result;vectorint path;if (!root) return result;traversal(root, path, result);return result;} };思路分析我们对以上代码进行精简将递归和回溯浓缩要一行代码当中将path -作为参数输入因为并没有改变path的数值执行完递归函数之后path依然是之前的数值相当于回溯了。省去回溯操作同时每次递归都在修改path的值也省去将路径节点转换为字符串的操作。 class Solution2 { public:// 前序遍历递归法:精简版本 void traversal(TreeNode* root, string path, vectorstring result) { // 1.输入参数和返回值 path to_string(root-val); // 中间节点先加入pathif (!root-left !root-right) { // 2.终止条件遇到叶子节点result.push_back(path);return;}// 3.单层递归逻辑递归回溯if (root-left) traversal(root-left, path -, result); // 左if (root-right) traversal(root-right, path -, result); // 右}vectorstring binaryTreePaths(TreeNode* root) {vectorstring result;string path;if (!root) return result;traversal(root, path, result);return result;} };复杂度分析 时间复杂度 O ( n 2 ) O(n^2) O(n2)n表示节点数量。遍历所有节点复杂度为 O ( n ) O(n) O(n)每一次会对 path 变量进行拷贝构造 O ( n ) O(n) O(n)时间复杂度为总时间复杂度为 O ( n 2 ) O(n^2) O(n2)。空间复杂度 O ( n 2 ) O(n^2) O(n2)考虑最坏的情况下树的每个节点都只有一个孩子整棵树呈现链状递归层数为n层此时每一层的 path 变量的空间代价的总和为 O ( ∑ i 1 n i ) O ( n 2 ) O(\sum^n_{i1}i)O(n^2) O(∑i1n​i)O(n2)。 三、完整代码 # include iostream # include vector # include queue # include string # include algorithm # include stack using namespace std;// 树节点定义 struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {} };class Solution { public:// 前序遍历递归法/回溯法 void traversal(TreeNode* root, vectorint path, vectorstring result) { // 1.输入参数和返回值 path.push_back(root-val); // 中间节点先加入pathif (!root-left !root-right) { // 2.终止条件遇到叶子节点string spath;for (int i 0; i path.size() - 1; i) {spath to_string(path[i]);spath -;}spath to_string(path[path.size() - 1]);result.push_back(spath);return;}// 3.单层递归逻辑if (root-left) {traversal(root-left, path, result); // 递归path.pop_back(); // 回溯}if (root-right) {traversal(root-right, path, result);path.pop_back();}}vectorstring binaryTreePaths(TreeNode* root) {vectorstring result;vectorint path;if (!root) return result;traversal(root, path, result);return result;} };class Solution2 { public:// 前序遍历递归法:精简版本 void traversal(TreeNode* root, string path, vectorstring result) { // 1.输入参数和返回值 path to_string(root-val); // 中间节点先加入pathif (!root-left !root-right) { // 2.终止条件遇到叶子节点result.push_back(path);return;}// 3.单层递归逻辑递归回溯if (root-left) traversal(root-left, path -, result); // 左if (root-right) traversal(root-right, path -, result); // 右}vectorstring binaryTreePaths(TreeNode* root) {vectorstring result;if (!root) return result;traversal(root, , result);return result;} };templatetypename T void my_print(T v, const string msg) {cout msg endl;for (class T ::iterator it v.begin(); it ! v.end(); it) {cout *it ;}cout endl; }templateclass T1, class T2 void my_print2(T1 v, const string str) {cout str endl;for (class T1::iterator vit v.begin(); vit v.end(); vit) {for (class T2::iterator it (*vit).begin(); it (*vit).end(); it) {cout *it ;}cout endl;} }// 前序遍历迭代法创建二叉树每次迭代将容器首元素弹出弹出代码还可以再优化 void Tree_Generator(vectorstring t, TreeNode* node) {if (!t.size() || t[0] NULL) return; // 退出条件else {node new TreeNode(stoi(t[0].c_str())); // 中if (t.size()) {t.assign(t.begin() 1, t.end());Tree_Generator(t, node-left); // 左} if (t.size()) {t.assign(t.begin() 1, t.end());Tree_Generator(t, node-right); // 右}} }// 层序遍历 vectorvectorint levelOrder(TreeNode* root) {queueTreeNode* que;if (root ! NULL) que.push(root);vectorvectorint result;while (!que.empty()) {int size que.size(); // size必须固定, que.size()是不断变化的vectorint vec;for (int i 0; i size; i) {TreeNode* node que.front();que.pop();vec.push_back(node-val);if (node-left) que.push(node-left);if (node-right) que.push(node-right);}result.push_back(vec);}return result; }int main() {vectorstring t { 1, 2, NULL, 5, NULL, NULL, 3, NULL, NULL }; // 前序遍历my_print(t, 目标树);TreeNode* root new TreeNode();Tree_Generator(t, root);vectorvectorint tree levelOrder(root);my_print2vectorvectorint, vectorint(tree, 目标树:);Solution s1;vectorstring result s1.binaryTreePaths(root);my_print(result, 所有路径为);system(pause);return 0; }end
http://www.w-s-a.com/news/249952/

相关文章:

  • 网站建设过程中的收获html5官方网站开发流程
  • 网站建设-信科网络h5美食制作网站模板下载
  • 聊城九洲建设有限公司网站师大暨大网站建设
  • 烟台网站建设学校潍坊市建设监理协会网站
  • 大良营销网站建设资讯建设厅网站总经济师是干什么的
  • 网站优化推广软件网站制作公司dedecms
  • 在哪一个网站做社保申报百度小程序开发平台
  • 东莞网站建设_东莞网页设计网站色调代号
  • 濮阳住房和城乡建设部网站给别人做ppt的网站
  • 电子商务网站建设规划心得广告投放媒体
  • 淘宝店铺购买价格宝应百度seo
  • 同一虚拟主机 2个网站如果网站设计时
  • 网站维护的协议做网站 需要 域名 空间
  • 高安建站公司济宁哪里做网站最便宜
  • 南宁建站免费模板简单的html网页设计
  • 吉林省建设 安全 网站沐风seo
  • 自己做捕鱼网站能不能挣钱软件开发公司需要什么硬件设备
  • 大连设计网站公司3小说网站开发
  • 建设环保网站查询系统网站建设168
  • 保险网站程序源码wordpress过滤敏感
  • 简述营销型网站推广的方法网站建设报价方案模板
  • 四川林峰脉建设工程有限公司网站为什么建设营销型网站
  • 网站模板搭建已经建网站做外贸
  • 网站建设选哪个wordpress实现微信登录界面
  • 网页设计网站哪个公司好学网站开发要多少钱
  • 商务网站建设ppt做视频分享网站
  • WordPress网站根目录有哪些wordpress用户等级
  • 私人装修接单网站重庆制作企业网站
  • 易企秀网站怎么做轮播图什么是网站版面布局
  • 网站开发先写什么后写什么做网站公司专业