0889.cpp (502B)
1 class Solution { 2 public: 3 TreeNode *constructFromPrePost(const vector<int> &pre, const vector<int> &post) { 4 vector<TreeNode *> s = {new TreeNode(pre[0])}; 5 for (int i = 1, j = 0; i < pre.size(); i++) { 6 TreeNode *node = new TreeNode(pre[i]); 7 while (s.back()->val == post[j]) 8 s.pop_back(), j++; 9 (!s.back()->left ? s.back()->left : s.back()->right) = node; 10 s.push_back(node); 11 } 12 return s.front(); 13 } 14 };