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++){

valToIndexpostorder\[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(preorderpreStart);

}

int rootVal=preorderpreStart;

int leftRootVal=preorderpreStart+1;

int index=valToIndexleftRootVal;

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;

}

};

相关推荐
Demon--hx3 分钟前
C++ 文件流:理解 ifstream/ofstream 与 RAII 机制
开发语言·c++
纪念 2295 分钟前
C++ stack和queue
开发语言·c++
CodeYp201918 分钟前
第6讲:模板初阶
开发语言·c++·模板
吞下星星的少年·-·26 分钟前
牛客周赛 119B题(贪心)
算法·贪心
.YM.Z29 分钟前
【C++11】初识——右值引用和移动语义,可变参数模板
c++·c++11
NEFU_Jyj36 分钟前
牛客周赛R166(max型瓶颈最短路,前后缀DP合并)
算法·深度优先
要练八块腹肌43 分钟前
红黑树的实现以及对map和set的封装
c++
Tisfy44 分钟前
LeetCode 3644.排序排列:不对则与(脑筋急转弯)
数据结构·算法·leetcode·题解·位运算
骑着蜗牛撵大象3271 小时前
从三次握手到 epoll:C++ 写出可落地的 TCP Socket 服务端
网络·c++·tcp/ip·高并发·tcp·epoll
卡卡~~1 小时前
C++学习
开发语言·c++