Construct Binary Search Tree from Preorder Traversal
Last updated
Last updated
class Solution {
public:
TreeNode *bstFromPreorder(vector<int> &preorder) {
if (preorder.empty())
return nullptr;
TreeNode *node, *curr, *root = new TreeNode(preorder[0]);
stack<TreeNode *> st;
st.push(root);
for (int i = 1; i < preorder.size(); ++i) {
int val = preorder[i];
if (val < st.top()->val) {
node = new TreeNode(val);
st.top()->left = node;
st.push(node);
} else {
do {
curr = st.top();
st.pop();
} while (!st.empty() && st.top()->val < val);
curr->right = new TreeNode(val);
st.push(curr->right);
}
}
return root;
}
};