leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
1008.cpp (680B)
0 class Solution { 1 public: 2 TreeNode *bstFromPreorder(vector<int> &preorder) { 3 int index = 0; 4 TreeNode *root = new TreeNode(preorder[index++]); 5 stack<TreeNode *> st; 6 st.push(root); 7 while (index < preorder.size()) { 8 int val = preorder[index++]; 9 if (val < st.top()->val) { 10 st.push(st.top()->left = new TreeNode(val)); 11 } else { 12 TreeNode *crnt = nullptr; 13 while (!st.empty() && val > st.top()->val) 14 crnt = st.top(), st.pop(); 15 st.push(crnt->right = new TreeNode(val)); 16 } 17 } 18 return root; 19 } 20 };