19 ML_UTILS_START_NAMESPACE
35 flatten_elements.push_back(tree.
value);
36 for (
const auto &child : tree.
children)
38 flatten(child, flatten_elements);
54 if (tree.
value < newValue)
59 std::swap(tree, newRoot);
61 tree.
children.emplace_back(tree_node<T>{std::move(newRoot)});
67 if (child.value >= newValue)
74 if (newValue >= child.value)
86 [&newValue](
const auto &item) { return !(newValue >= item.value); });
88 auto newChild = tree_node<T>{std::move(newValue), {}};
91 for (
auto it = itToMoved; it != tree.
children.end(); ++it)
93 newChild.children.emplace_back(std::move(*it));
96 tree.
children.emplace_back(std::move(newChild));
101 if (tree.
value == zero)
103 tree.
value = std::move(newValue);
107 tree.
children.emplace_back(tree_node<T>{std::move(newValue), {}});
112 ML_UTILS_END_NAMESPACE
void insert_set_sorted(tree_node< T > &tree, T newValue, T zero={})
void flatten(const tree_node< T > &tree, std::vector< T > &flatten_elements)
std::vector< tree_node > children