A generic binary search tree implementation.
More...
#include <cassert>
#include <functional>
#include <iostream>
#include <memory>
#include <vector>
◆ main()
555 {
564}
static void test_get_elements_inorder()
Function for testing get_elements_inorder().
Definition: binary_search_tree2.cpp:497
static void test_contains()
Function for testing contains().
Definition: binary_search_tree2.cpp:428
static void test_insert()
Function for testing insert().
Definition: binary_search_tree2.cpp:357
static void test_get_elements_postorder()
Function for testing get_elements_postorder().
Definition: binary_search_tree2.cpp:539
static void test_find_max()
Function for testing find_max().
Definition: binary_search_tree2.cpp:474
static void test_get_elements_preorder()
Function for testing get_elements_preorder().
Definition: binary_search_tree2.cpp:518
static void test_remove()
Function for testing remove().
Definition: binary_search_tree2.cpp:391
static void test_find_min()
Function for testing find_min().
Definition: binary_search_tree2.cpp:451
◆ test_contains()
static void test_contains |
( |
| ) |
|
|
static |
Function for testing contains().
- Returns
void
428 {
430
436
442
444}
The Binary Search Tree class.
Definition: binary_search_tree2.cpp:19
bool insert(std::unique_ptr< bst_node > &node, T new_value)
Recursive function to insert a value into the BST.
Definition: binary_search_tree2.cpp:89
bool contains(std::unique_ptr< bst_node > &node, T value)
Recursive function to check if a value is in the BST.
Definition: binary_search_tree2.cpp:176
◆ test_find_max()
static void test_find_max |
( |
| ) |
|
|
static |
Function for testing find_max().
- Returns
void
474 {
476
480
485
487 assert(max == 6);
488
490}
bool find_max(std::unique_ptr< bst_node > &node, T &ret_value)
Recursive function to find the maximum value in the BST.
Definition: binary_search_tree2.cpp:52
◆ test_find_min()
static void test_find_min |
( |
| ) |
|
|
static |
Function for testing find_min().
- Returns
void
451 {
453
457
462
464 assert(min == 3);
465
467}
bool find_min(std::unique_ptr< bst_node > &node, T &ret_value)
Recursive function to find the minimum value in the BST.
Definition: binary_search_tree2.cpp:70
◆ test_get_elements_inorder()
static void test_get_elements_inorder |
( |
| ) |
|
|
static |
Function for testing get_elements_inorder().
- Returns
void
497 {
498 std::cout <<
"Testing BST get_elements_inorder...";
499
505
508 assert(actual == expected);
509
511}
std::vector< T > get_elements_inorder()
Get all values of the BST in in-order order.
Definition: binary_search_tree2.cpp:320
◆ test_get_elements_postorder()
static void test_get_elements_postorder |
( |
| ) |
|
|
static |
Function for testing get_elements_postorder().
- Returns
void
539 {
540 std::cout <<
"Testing BST get_elements_postorder...";
541
547
550 assert(actual == expected);
551
553}
std::vector< T > get_elements_postorder()
Get all values of the BST in post-order order.
Definition: binary_search_tree2.cpp:344
◆ test_get_elements_preorder()
static void test_get_elements_preorder |
( |
| ) |
|
|
static |
Function for testing get_elements_preorder().
- Returns
void
518 {
519 std::cout <<
"Testing BST get_elements_preorder...";
520
526
529 assert(actual == expected);
530
532}
std::vector< T > get_elements_preorder()
Get all values of the BST in pre-order order.
Definition: binary_search_tree2.cpp:332
◆ test_insert()
static void test_insert |
( |
| ) |
|
|
static |
Function for testing insert().
- Returns
void
357 {
359
361 bool res = tree.
insert(5);
363 assert(res);
366 assert(max == 5);
367 assert(min == 5);
368 assert(tree.
size() == 1);
369
375 assert(max == 6);
376 assert(min == 3);
377 assert(tree.
size() == 4);
378
379 bool fail_res = tree.
insert(4);
380 assert(!fail_res);
381 assert(tree.
size() == 4);
382
384}
std::size_t size()
Get the number of values in the BST.
Definition: binary_search_tree2.cpp:313
◆ test_remove()
static void test_remove |
( |
| ) |
|
|
static |
Function for testing remove().
- Returns
void
391 {
393
399
400 bool res = tree.
remove(5);
402 assert(res);
405 assert(max == 6);
406 assert(min == 3);
407 assert(tree.
size() == 3);
409
413 assert(tree.
size() == 0);
415
416 bool fail_res = tree.
remove(5);
417 assert(!fail_res);
418 assert(tree.
size() == 0);
419
421}
bool remove(std::unique_ptr< bst_node > &parent, std::unique_ptr< bst_node > &node, T rm_value)
Recursive function to remove a value from the BST.
Definition: binary_search_tree2.cpp:124