当前位置: 首页> 房产> 建筑 > 广告公司主要是做什么的_天津建设工程信息平台_湖南seo_台州seo优化

广告公司主要是做什么的_天津建设工程信息平台_湖南seo_台州seo优化

时间:2025/8/2 1:55:03来源:https://blog.csdn.net/2301_80689220/article/details/142705898 浏览次数:0次
广告公司主要是做什么的_天津建设工程信息平台_湖南seo_台州seo优化

1.题目解析

题目来源:105.从前序与中序遍历序列构造二叉树——力扣

测试用例

2.算法原理

首先要了解一个概念

前序遍历:按照 根节点->左子树->右子树的顺序遍历二叉树

中序遍历:按照 左子树->根节点->右子树的顺序遍历二叉树

题目中我们可知需要根据给出的前序遍历序列与中序遍历序列构建一个二叉树,解题思路就是通过前序序列确定根节点,然后根据找出的根节点将中序序列分为:[左子树,根节点,右子树]这样三个范围,然后递归构造左子树与右子树,以此类推直到完成构建

3.实战代码

/*** Definition for a binary tree node.* 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:TreeNode* build(vector<int>& preorder, vector<int>& inorder,int& previ,int inbegin,int inend){if(inbegin > inend){return nullptr;}//创建根节点TreeNode* root = new TreeNode(preorder[previ]);//通过前序确定根节点后将中序数组分为三部分//左子树 根节点 右子树int rooti = inbegin;while(inbegin <= inbegin){if(inorder[rooti] == preorder[previ]){break;}//寻找中序中的根节点所在的的位置rooti++;}//此时前序中的根节点构建完成,向后构建其他子树的根节点previ++;//左子树递归构建[inbegin,rooti-1]区间//右子树递归构建[root+1,inend]区间root->left = build(preorder,inorder,previ,inbegin,rooti-1);root->right = build(preorder,inorder,previ,rooti+1,inend);return root;}TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {int i = 0;return build(preorder,inorder,i,0,preorder.size()-1);}
};
关键字:广告公司主要是做什么的_天津建设工程信息平台_湖南seo_台州seo优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: