Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename Type>
- void AVLTree<Type>::InsertAVLItem(typename BSTree<Type>::BinTree& node, const Type& value, std::stack<typename BSTree<Type>::BinTree> nodes)
- {
- if(node == 0)
- {
- node = make_node(value);
- node->balance_factor = 0;
- if(node->balance_factor < -1 || node->balance_factor > 1)
- BalanceAVLTree(nodes);
- }
- else if(value < node->data)
- {
- nodes.push(node);
- InsertAVLItem(node->left, value, nodes);
- node->balance_factor = tree_height(node->left) - tree_height(node->right);
- }
- else if(value > node->data)
- {
- nodes.push(node);
- InsertAVLItem(node->right, value, nodes);
- node->balance_factor = tree_height(node->left) - tree_height(node->right);
- }
- else
- throw(BSTException(BSTException::E_DUPLICATE, "insert_item: Duplicate value"));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement