【发布时间】:2017-08-25 00:21:22
【问题描述】:
struct BTreeNode {
bool is_leaf=true;
std::vector<int> elements;
std::vector<BTreeNode*> children;
BTreeNode() {}
BTreeNode (std::vector<int> v) {
this->elements = v;
}
};
void traverse(BTreeNode* root) {
for(int i = 0; i < (int)root->children.size(); ++i){
traverse(root->children[i]);
cout << root->elements[i] << endl;
}
traverse(root->children[root->children.size() -1]);
}
我的方法出现了段错误。我们如何为 B-Tree 编写正确的 inOrder Traversal?
【问题讨论】:
-
两个遍历应该相同:traverse(root->children[i])。并且不要忘记检查root是否为“is_leaf”