如果我们有一个先序遍历的数组或者一个链表,以它们来建立一棵树,但是又无法很好的划分左右子树,可以用下面的框架。
TreeNode *buildTree(vector<int> &preorder, int &cur, int min, int max)
{
if(cur >= preorder.size()) return NULL;
TreeNode *root = NULL;
if(preorder[cur] >= min && preorder[cur] <= max)
{
root = new TreeNode(preorder[cur]);
cur++;
root->left = buildTree(preorder, cur, min, root->val);
root->right = buildTree(preorder, cur, root->val, max);
}
return root;
}