23#ifndef SCAPEGOATTREE_SCAPEGOATTREE_HPP
24#define SCAPEGOATTREE_SCAPEGOATTREE_HPP
211 std::pair<ScapeGoatTree, ScapeGoatTree>
split(
T value);
226 static iterator
end();
T value
Definition Node.hpp:10
Definition scapegoat_tree.hpp:75
iterator(TreeNode *node)
Definition scapegoat_tree.hpp:80
TreeNode * curr
Definition scapegoat_tree.hpp:76
T & operator*()
Definition scapegoat_tree.hpp:83
iterator & operator++()
Definition scapegoat_tree.hpp:86
bool operator!=(const iterator &other) const
Definition scapegoat_tree.hpp:99
iterator operator++(int)
Definition scapegoat_tree.hpp:92
Definition scapegoat_tree.hpp:53
T sumHelper(TreeNode *node, T min, T max)
Definition scapegoat_tree.tpp:795
std::string displayInOrder()
Definition scapegoat_tree.tpp:446
std::string displayLevels()
Definition scapegoat_tree.tpp:468
bool isUndoing
Definition scapegoat_tree.hpp:71
bool operator-(const T &value)
Definition scapegoat_tree.tpp:653
T getMin()
Definition scapegoat_tree.tpp:811
int rebuildCount
Definition scapegoat_tree.hpp:58
bool operator==(const ScapeGoatTree &tree) const
Definition scapegoat_tree.tpp:612
static iterator end()
Definition scapegoat_tree.tpp:877
T kthSmallestHelper(TreeNode *node, int k) const
Definition scapegoat_tree.tpp:857
void inorderTraversal(const TreeNode *node, int &i, T *&array) const
Definition scapegoat_tree.tpp:360
void rangeHelper(TreeNode *node, T min, T max, Vector< T > &range)
Definition scapegoat_tree.tpp:827
TreeNode * findTraitor(TreeNode *node)
Definition scapegoat_tree.tpp:300
void changeAlpha(const double alpha)
Definition scapegoat_tree.hpp:213
ScapeGoatTree & operator=(const ScapeGoatTree &other)
Definition scapegoat_tree.tpp:547
ScapeGoatTree operator+(const ScapeGoatTree &other) const
Definition scapegoat_tree.tpp:504
T kthSmallest(int k) const
Definition scapegoat_tree.tpp:864
int updateSize(TreeNode *&node)
Definition scapegoat_tree.tpp:900
bool operator!() const
Definition scapegoat_tree.tpp:645
Stack< Command< T > > redoStack
Definition scapegoat_tree.hpp:66
int getThreshold() const
Definition scapegoat_tree.hpp:145
TreeNode * rebuildTree(int start, int end, TreeNode *parent_node, T *array)
Definition scapegoat_tree.tpp:318
bool operator[](T value) const
Definition scapegoat_tree.tpp:595
const TreeNode * getRoot()
Definition scapegoat_tree.tpp:348
T sumInRange(T min, T max)
Definition scapegoat_tree.tpp:806
iterator begin()
Definition scapegoat_tree.tpp:870
void undo()
Definition scapegoat_tree.tpp:736
Vector< T > valuesInRange(T min, T max)
Definition scapegoat_tree.tpp:834
void insertBatch(const Vector< T > &values)
Definition scapegoat_tree.tpp:142
Stack< Command< T > > undoStack
Definition scapegoat_tree.hpp:62
void operator+=(const T &value)
Definition scapegoat_tree.tpp:583
int max_nodes
Definition scapegoat_tree.hpp:72
~ScapeGoatTree()
Definition scapegoat_tree.tpp:38
static unsigned int countN(const TreeNode *node)
Definition scapegoat_tree.tpp:291
void clear()
Definition scapegoat_tree.tpp:724
std::pair< ScapeGoatTree, ScapeGoatTree > split(T value)
Definition scapegoat_tree.tpp:915
double ALPHA
Definition scapegoat_tree.hpp:73
int nNodes
Definition scapegoat_tree.hpp:57
static TreeNode * findSuccessor(TreeNode *node)
Definition scapegoat_tree.tpp:882
void restructure_subtree(TreeNode *newNode)
Definition scapegoat_tree.tpp:63
T getSuccessor(T value) const
Definition scapegoat_tree.tpp:841
std::string isBalanced() const
Definition scapegoat_tree.tpp:665
Node< T > TreeNode
Definition scapegoat_tree.hpp:55
void deleteBatch(const Vector< T > &values)
Definition scapegoat_tree.tpp:156
TreeNode * find_node(T &key) const
Definition scapegoat_tree.tpp:708
static void postorderTraversal(const TreeNode *node)
Definition scapegoat_tree.tpp:371
TreeNode * root
Definition scapegoat_tree.hpp:56
bool areTreesEqual(const TreeNode *n1, const TreeNode *n2) const
Definition scapegoat_tree.tpp:619
void DeletionRebuild()
Definition scapegoat_tree.tpp:331
void redo()
Definition scapegoat_tree.tpp:767
bool search(const T &key) const
Definition scapegoat_tree.tpp:695
void preorderTraversal(const TreeNode *node)
Definition scapegoat_tree.tpp:382
T getMax()
Definition scapegoat_tree.tpp:819
std::string displayPostOrder()
Definition scapegoat_tree.tpp:457
std::string displayPreOrder()
Definition scapegoat_tree.tpp:435
bool operator!=(const ScapeGoatTree &tree) const
Definition scapegoat_tree.tpp:637
bool deleteValue(T value)
Definition scapegoat_tree.tpp:174
bool operator-=(const T &value)
Definition scapegoat_tree.tpp:589
static int findH(const TreeNode *node)
Definition scapegoat_tree.tpp:281
void insert(T value)
Definition scapegoat_tree.tpp:87
OpType
Definition scapegoat_tree.hpp:36
Definition scapegoat_tree.hpp:47
OpType type
Definition scapegoat_tree.hpp:48
T value
Definition scapegoat_tree.hpp:49