这周2大品牌-Clarins and Biotherm PROMOTION EVENTS# Fashion - 美丽时尚
s*n
1 楼
这是Leetcode上的一篇文章:
leetcode.com/2010/09/saving-binary-search-tree-to-file.html
里面的重建BST代码我觉得有问题:
void readBSTHelper(int min, int max, int &insertVal,
BinaryTree *&p, ifstream &fin) {
if (insertVal > min && insertVal < max) {
int val = insertVal;
p = new BinaryTree(val);
if (fin >> insertVal) {
readBSTHelper(min, val, insertVal, p->left, fin);
readBSTHelper(val, max, insertVal, p->right, fin);
}
}
}
void readBST(BinaryTree *&root, ifstream &fin) {
int val;
fin >> val;
readBSTHelper(INT_MIN, INT_MAX, val, root, fin);
}
比如
10
/
5
/ \
4 8
的pre-order是: 10 5 4 8.
显然读到8上面的算法就不工作了,大家有没有什么方法可以重建BST in O(n)
我能想到的最好方法就是starting search from the root node and insert了。
leetcode.com/2010/09/saving-binary-search-tree-to-file.html
里面的重建BST代码我觉得有问题:
void readBSTHelper(int min, int max, int &insertVal,
BinaryTree *&p, ifstream &fin) {
if (insertVal > min && insertVal < max) {
int val = insertVal;
p = new BinaryTree(val);
if (fin >> insertVal) {
readBSTHelper(min, val, insertVal, p->left, fin);
readBSTHelper(val, max, insertVal, p->right, fin);
}
}
}
void readBST(BinaryTree *&root, ifstream &fin) {
int val;
fin >> val;
readBSTHelper(INT_MIN, INT_MAX, val, root, fin);
}
比如
10
/
5
/ \
4 8
的pre-order是: 10 5 4 8.
显然读到8上面的算法就不工作了,大家有没有什么方法可以重建BST in O(n)
我能想到的最好方法就是starting search from the root node and insert了。