leetcode

Solution 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 };