Fix node reuse. (#4404)
* Reinitialize `_sindex` when reallocating a deleted node.
This commit is contained in:
@@ -84,4 +84,21 @@ TEST(Tree, Load) {
|
||||
EXPECT_EQ(tree[1].LeafValue(), 0.1f);
|
||||
EXPECT_TRUE(tree[1].IsLeaf());
|
||||
}
|
||||
|
||||
TEST(Tree, AllocateNode) {
|
||||
RegTree tree;
|
||||
tree.ExpandNode(
|
||||
0, 0, 0.0f, false, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
tree.CollapseToLeaf(0, 0);
|
||||
ASSERT_EQ(tree.NumExtraNodes(), 0);
|
||||
|
||||
tree.ExpandNode(
|
||||
0, 0, 0.0f, false, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
ASSERT_EQ(tree.NumExtraNodes(), 2);
|
||||
|
||||
auto& nodes = tree.GetNodes();
|
||||
ASSERT_FALSE(nodes.at(1).IsDeleted());
|
||||
ASSERT_TRUE(nodes.at(1).IsLeaf());
|
||||
ASSERT_TRUE(nodes.at(2).IsLeaf());
|
||||
}
|
||||
} // namespace xgboost
|
||||
|
||||
Reference in New Issue
Block a user