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

免费logo设计软件手机版许昌网站seo

免费logo设计软件手机版,许昌网站seo,猎头网站模板,广西疫情最新通知文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:【算法与数据结构】106、LeetCode从中序与后序遍历序列构造二叉树这两道题有些类似,相关代…

文章目录

  • 一、题目
  • 二、解法
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、题目

在这里插入图片描述
在这里插入图片描述

二、解法

  思路分析:【算法与数据结构】106、LeetCode从中序与后序遍历序列构造二叉树这两道题有些类似,相关代码可以互相参考,本题明示了要用递归来做,那么递归三要素不可缺少:输入参数和返回值;单层递归逻辑;终止条件。本题当中,输入参数引用二叉树遍历数组,同时根据最大值划分的边界[Begin, End),代码统一为左闭右开区间,区间具体如何划分设计到边界条件是否+1-1这种。返回值为root根节点。
  程序如下

class Solution {
public:// 3、输入参数TreeNode* traversal(const vector<int> &nums, int Begin, int End) {// 1、终止条件if (Begin == End) return NULL;//2、单层递归逻辑int maxIndex = Begin;for (int i = Begin; i < End; i++) { // 找最大值if (nums[i] > nums[maxIndex]) maxIndex = i;}TreeNode* root = new TreeNode(nums[maxIndex]);// 最大值左边部分,左闭右开[leftBegin, leftEnd)int leftBegin = Begin; int leftEnd = maxIndex;if (leftEnd < leftBegin) leftEnd = Begin;// 最大值右边部分,左闭右开[rightBegin, rightEnd)int rightBegin = maxIndex + 1;int rightEnd = End;if (rightBegin > rightEnd) rightBegin = End;root->left = traversal(nums, leftBegin, leftEnd);root->right = traversal(nums, rightBegin, rightEnd);// 3、返回值return root;}TreeNode* constructMaximumBinaryTree(vector<int>& nums) {  if (!nums.size()) return NULL;return traversal(nums, 0, nums.size());}
};

三、完整代码

# include <iostream>
# include <vector>
# include <queue>
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:// 3、输入参数TreeNode* traversal(const vector<int> &nums, int Begin, int End) {// 1、终止条件if (Begin == End) return NULL;//2、单层递归逻辑int maxIndex = Begin;for (int i = Begin; i < End; i++) { // 找最大值if (nums[i] > nums[maxIndex]) maxIndex = i;}TreeNode* root = new TreeNode(nums[maxIndex]);// 最大值左边部分,左闭右开[leftBegin, leftEnd)int leftBegin = Begin; int leftEnd = maxIndex;if (leftEnd < leftBegin) leftEnd = Begin;// 最大值右边部分,左闭右开[rightBegin, rightEnd)int rightBegin = maxIndex + 1;int rightEnd = End;if (rightBegin > rightEnd) rightBegin = End;root->left = traversal(nums, leftBegin, leftEnd);root->right = traversal(nums, rightBegin, rightEnd);// 3、返回值return root;}TreeNode* constructMaximumBinaryTree(vector<int>& nums) {  if (!nums.size()) return NULL;return traversal(nums, 0, nums.size());}
};// 层序遍历
vector<vector<int>> levelOrder(TreeNode* root) {queue<TreeNode*> que;if (root != NULL) que.push(root);vector<vector<int>> result;while (!que.empty()) {int size = que.size();  // size必须固定, que.size()是不断变化的vector<int> 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;
}template<class 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;}
}int main()
{//int arr[] = {3, 2, 1, 6, 0, 5};int arr[] = { 3, 2, 1};vector<int> nums(arr, arr + sizeof(arr) / sizeof(int));Solution s;TreeNode* root = s.constructMaximumBinaryTree(nums);vector<vector<int>> tree = levelOrder(root);my_print2<vector<vector<int>>, vector<int>>(tree, "目标树:");system("pause");return 0;
}

end

http://www.tj-hxxt.cn/news/9163.html

相关文章:

  • 响应式网站的优缺点软文通
  • 做网站和网页的目的和作用南京做网站的公司
  • 杭州滨江区抖音seo行情seo教程网站优化
  • 中信建设有限责任公司招标平台安徽百度seo公司
  • 玩具租赁系统网站开发与实现网页开发用什么软件
  • 建电子商务网站需要多少钱竞价推广账户竞价托管费用
  • 做网站用什么团建网页优化包括什么
  • 学会python做网站wordpress企业网站模板
  • ecs云服务器建设网站自媒体账号申请
  • 中职示范校建设验收网站宁波关键词优化平台
  • 建站做得好的公司金融网站推广圳seo公司
  • 微信开放平台文档搜索引擎优化的流程
  • 南京网站建设知识手机如何制作网页链接
  • 福州网站建设服务价格最实惠北京发生大事了
  • 计算机网络技术网站开发网站设计开发网站
  • 青岛网站建设加盟公司网站产品推广
  • 关于景区网站规划建设方案书宁波seo专员
  • 做网站用上面软件写代码比较好想要网站导航正式推广
  • 盗版网站是如何做的网络营销案例分析报告
  • 网站建设优化公司seo岗位工作内容
  • 智慧旅游网站建设方案市场调研一般怎么做
  • h5响应式网站建设方案磁力吧
  • ui设计无经验找工作抖音seo排名软件哪个好
  • 做网站有限公司东莞seo网络优化
  • 成都哪家做网站石家庄seo外包公司
  • 宜州做网站seo类目链接优化
  • 网站建设和优化的营销话术凡科网站登录入口
  • 把自己做的网页发布到网站厦门关键词排名推广
  • 三维家是在网站上做还是在app上什么平台推广效果最好
  • wordpress 新增小璇seo优化网站