A generic binary search tree implementation. Here you can find more information about the algorithm: Scaler - Binary Search tree.
More...
#include <cassert>
#include <functional>
#include <iostream>
#include <memory>
#include <vector>
Go to the source code of this file.
A generic binary search tree implementation. Here you can find more information about the algorithm: Scaler - Binary Search tree.
- See also
- binary_search_tree.cpp
Definition in file binary_search_tree2.cpp.
◆ main()
Definition at line 556 of file binary_search_tree2.cpp.
556 {
565}
static void test_get_elements_inorder()
Function for testing get_elements_inorder().
static void test_contains()
Function for testing contains().
static void test_insert()
Function for testing insert().
static void test_get_elements_postorder()
Function for testing get_elements_postorder().
static void test_find_max()
Function for testing find_max().
static void test_get_elements_preorder()
Function for testing get_elements_preorder().
static void test_remove()
Function for testing remove().
static void test_find_min()
Function for testing find_min().
◆ test_contains()
static void test_contains |
( |
| ) |
|
|
static |
Function for testing contains().
- Returns
void
Definition at line 429 of file binary_search_tree2.cpp.
429 {
430 std::cout << "Testing BST contains...";
431
437
443
444 std::cout << "ok" << std::endl;
445}
The Binary Search Tree class.
bool insert(std::unique_ptr< bst_node > &node, T new_value)
Recursive function to insert a value into the BST.
bool contains(std::unique_ptr< bst_node > &node, T value)
Recursive function to check if a value is in the BST.
◆ test_find_max()
static void test_find_max |
( |
| ) |
|
|
static |
Function for testing find_max().
- Returns
void
Definition at line 475 of file binary_search_tree2.cpp.
475 {
476 std::cout << "Testing BST find_max...";
477
478 int max = 0;
481
486
488 assert(max == 6);
489
490 std::cout << "ok" << std::endl;
491}
bool find_max(std::unique_ptr< bst_node > &node, T &ret_value)
Recursive function to find the maximum value in the BST.
◆ test_find_min()
static void test_find_min |
( |
| ) |
|
|
static |
Function for testing find_min().
- Returns
void
Definition at line 452 of file binary_search_tree2.cpp.
452 {
453 std::cout << "Testing BST find_min...";
454
455 int min = 0;
458
463
465 assert(min == 3);
466
467 std::cout << "ok" << std::endl;
468}
bool find_min(std::unique_ptr< bst_node > &node, T &ret_value)
Recursive function to find the minimum value in the BST.
◆ test_get_elements_inorder()
static void test_get_elements_inorder |
( |
| ) |
|
|
static |
Function for testing get_elements_inorder().
- Returns
void
Definition at line 498 of file binary_search_tree2.cpp.
498 {
499 std::cout << "Testing BST get_elements_inorder...";
500
506
507 std::vector<int> expected = {3, 4, 5, 6};
509 assert(actual == expected);
510
511 std::cout << "ok" << std::endl;
512}
std::vector< T > get_elements_inorder()
Get all values of the BST in in-order order.
◆ test_get_elements_postorder()
static void test_get_elements_postorder |
( |
| ) |
|
|
static |
Function for testing get_elements_postorder().
- Returns
void
Definition at line 540 of file binary_search_tree2.cpp.
540 {
541 std::cout << "Testing BST get_elements_postorder...";
542
548
549 std::vector<int> expected = {3, 4, 6, 5};
551 assert(actual == expected);
552
553 std::cout << "ok" << std::endl;
554}
std::vector< T > get_elements_postorder()
Get all values of the BST in post-order order.
◆ test_get_elements_preorder()
static void test_get_elements_preorder |
( |
| ) |
|
|
static |
Function for testing get_elements_preorder().
- Returns
void
Definition at line 519 of file binary_search_tree2.cpp.
519 {
520 std::cout << "Testing BST get_elements_preorder...";
521
527
528 std::vector<int> expected = {5, 4, 3, 6};
530 assert(actual == expected);
531
532 std::cout << "ok" << std::endl;
533}
std::vector< T > get_elements_preorder()
Get all values of the BST in pre-order order.
◆ test_insert()
static void test_insert |
( |
| ) |
|
|
static |
Function for testing insert().
- Returns
void
Definition at line 358 of file binary_search_tree2.cpp.
358 {
359 std::cout << "Testing BST insert...";
360
362 bool res = tree.
insert(5);
363 int min = -1, max = -1;
364 assert(res);
367 assert(max == 5);
368 assert(min == 5);
369 assert(tree.
size() == 1);
370
376 assert(max == 6);
377 assert(min == 3);
378 assert(tree.
size() == 4);
379
380 bool fail_res = tree.
insert(4);
381 assert(!fail_res);
382 assert(tree.
size() == 4);
383
384 std::cout << "ok" << std::endl;
385}
std::size_t size()
Get the number of values in the BST.
◆ test_remove()
static void test_remove |
( |
| ) |
|
|
static |
Function for testing remove().
- Returns
void
Definition at line 392 of file binary_search_tree2.cpp.
392 {
393 std::cout << "Testing BST remove...";
394
400
401 bool res = tree.
remove(5);
402 int min = -1, max = -1;
403 assert(res);
406 assert(max == 6);
407 assert(min == 3);
408 assert(tree.
size() == 3);
410
414 assert(tree.
size() == 0);
416
417 bool fail_res = tree.
remove(5);
418 assert(!fail_res);
419 assert(tree.
size() == 0);
420
421 std::cout << "ok" << std::endl;
422}
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.