LeetCode:889. 根据前序和后序遍历构造二叉树

class Solution {

public:

unordered_map<int,int>valToIndex;

TreeNode* constructFromPrePost(vector<int>& preorder, vector<int>& postorder) {

for(int i=0;i<postorder.size();i++){

valToIndex[postorder[i]]=i;

}

return build(preorder,0,preorder.size()-1,

postorder,0,postorder.size()-1);

}

TreeNode* build(vector<int>& preorder,int preStart,int preEnd,

vector<int>& postorder,int postStart,int postEnd){

if(preStart>preEnd){

return nullptr;

}

if(preStart==preEnd){

return new TreeNode(preorder[preStart]);

}

int rootVal=preorder[preStart];

int leftRootVal=preorder[preStart+1];

int index=valToIndex[leftRootVal];

int leftsize=index-postStart+1;

//先构造出当前根节点

TreeNode* root=new TreeNode(rootVal);

root->left=build(preorder,preStart+1,preStart+leftsize,

postorder,postStart,index);

root->right=build(preorder,preStart+leftsize+1,preEnd,

postorder,index+1,postEnd-1);

return root;

}

};

相关推荐
深度学习机器15 小时前
Agent架构新方向?Claude Skills工作原理解析
人工智能·算法·架构
蓝色汪洋15 小时前
最近联系人-有点疑惑
算法
Aevget15 小时前
QtitanNavigation助力能源数字化转型:打造清晰可控的系统导航体验
c++·qt·嵌入式·能源·界面控件·ui开发
代码雕刻家15 小时前
1.7.课设实验-数据结构-二叉树-文件夹创建系统
c语言·数据结构
百锦再16 小时前
第6章 结构体与方法
android·java·c++·python·rust·go
埃博拉酱16 小时前
将你的C++库发布到NuGet全攻略
c++·nuget
北冥湖畔的燕雀16 小时前
C++STL之vector
开发语言·c++
apocelipes16 小时前
C++23的out_ptr和inout_ptr
c++
CoovallyAIHub16 小时前
告别碎片化!Dinomaly2:一个极简框架统一所有异常检测任务
深度学习·算法·计算机视觉
Watermelo61716 小时前
从vw/h到clamp(),前端响应式设计的痛点与进化
前端·javascript·css·算法·css3·用户界面·用户体验