28 # ifndef TPL_BINTREE_H 29 # define TPL_BINTREE_H 31 # include <tpl_binTreeOps.H> 33 using namespace Aleph;
55 template <
template <
typename>
class NodeType,
typename Key,
class Compare>
60 using Node = NodeType<Key>;
78 std::swap(root, tree.root);
79 std::swap(cmp, tree.cmp);
90 : head(&headNode), root(headNode.getR()), cmp(__cmp)
101 Node *
search(
const Key & key)
const noexcept
109 bool verify()
const {
return check_bst<Node, Compare>(root); }
115 bool verifyBin()
const {
return check_bst<Node, Compare>(root); }
199 Node *
remove(
const Key & key) noexcept
214 tree.root = Node::NullPtr;
228 t.tree_root = Node::NullPtr;
245 t.root = Node::NullPtr;
266 template <
typename Key,
class Compare = Aleph::less<Key>>
280 template <
typename Key,
class Compare = Aleph::less<Key>>
Definition: tpl_binNodeUtils.H:2445
bool split(const Key &key, GenBinTree &l, GenBinTree &r) noexcept
Definition: tpl_binTree.H:171
Definition: tpl_binTree.H:254
void join_dup(GenBinTree &t) noexcept
Definition: tpl_binTree.H:225
Node *& getRoot()
Return the root of tree.
Definition: tpl_binTree.H:112
Node * search_or_insert(Node *p) noexcept
Definition: tpl_binTree.H:153
bool split_key_rec(Node *&root, const typename Node::key_type &key, Node *&ts, Node *&tg, Compare cmp=Compare()) noexcept
Definition: tpl_binNodeUtils.H:1643
Compare & key_comp() noexcept
return the comparison criteria
Definition: tpl_binTree.H:83
Definition: tpl_binTree.H:267
Definition: tpl_binTree.H:56
GenBinTree(Compare __cmp=Compare()) noexcept
Initialize an empty tree with comparison criteria __cmp
Definition: tpl_binTree.H:89
void join_exclusive(GenBinTree &t) noexcept
Definition: tpl_binTree.H:242
Node * search(const Key &key) const noexcept
Definition: tpl_binTree.H:101
void join(GenBinTree &tree, GenBinTree &dup) noexcept
Definition: tpl_binTree.H:211
void split_dup(const Key &key, GenBinTree &l, GenBinTree &r) noexcept
Definition: tpl_binTree.H:187
bool verifyBin() const
Definition: tpl_binTree.H:115
void split_key_dup_rec(Node *&root, const typename Node::key_type &key, Node *&ts, Node *&tg, Compare cmp=Compare()) noexcept
Definition: tpl_binNodeUtils.H:1686
bool verify() const
Return true if the tree is a consistent (correct) binary search tree.
Definition: tpl_binTree.H:109
Definition: tpl_binTreeOps.H:41
Definition: tpl_binTree.H:281
Node * insert(Node *p) noexcept
Definition: tpl_binTree.H:124
void swap(GenBinTree &tree) noexcept
Swap this with tree in constant time.
Definition: tpl_binTree.H:76
Node * insert_dup(Node *p) noexcept
Definition: tpl_binTree.H:136
Compare & get_compare() noexcept
Definition: tpl_binTree.H:86