#include "tree-utils.h" #include // for regular binary trees template T max_elem(Tree *tree) { T res = tree->data; if (tree->left != nullptr) { res = std::max(res, max_elem(tree->left)); } if (tree->right != nullptr) { res = std::max(res, max_elem(tree->right)); } return res; } template T min_elem(Tree *tree) { T res = tree->data; if (tree->left != nullptr) { res = std::min(res, min_elem(tree->left)); } if (tree->right != nullptr) { res = std::min(res, min_elem(tree->right)); } return res; } // for binary search trees template T max_elem_bst(Tree *tree) { while (tree->right != nullptr) tree = tree->right; return tree->data; } template T min_elem_bst(Tree *tree) { while (tree->left != nullptr) tree = tree->left; return tree->data; } int main() { Tree *regularTree = new Tree(2, new Tree(3, new Tree(4), new Tree(5)), new Tree(13, new Tree(7), new Tree(8))); printTree(regularTree); std::cout << "Maximum element in regular binary tree: " << max_elem(regularTree) << '\n'; std::cout << "Minimum element in regular binary tree: " << min_elem(regularTree) << '\n'; Tree *binarySearchTree = new Tree(8, new Tree(3, new Tree(1), new Tree(6, new Tree(4), new Tree(7))), new Tree(10, nullptr, new Tree(14, new Tree(13)))); printTree(binarySearchTree); std::cout << "Maximum element in bs tree: " << max_elem_bst(binarySearchTree) << '\n'; std::cout << "Minimum element in bs tree: " << min_elem_bst(binarySearchTree) << '\n'; freeTree(regularTree); freeTree(binarySearchTree); return 0; }