I am trying to create a simple Binary Tree, then add several integers to the tree and finally print out the height of the tree. Although I seem to be getting a stack overflow exception when calling the BinaryTree height() method. Can anyone tell me why? Please advise if I have implemented something incorrectly as this is my first time working with Binary Trees (I have looked over a few tutorials and came up with this code)
TreeNode.cpp
#include "TreeNode.h"
TreeNode::TreeNode(int theData)
{
theData = value;
}
BinaryTree.cpp
#include "BinaryTree.h"
BinaryTree::BinaryTree()
{
root = NULL;
}
void BinaryTree::add(int data)
{
if (root != NULL) {
add(root,data);
}
else {
root = new TreeNode(data);
root->value = data;
root->left = NULL;
root->right = NULL;
}
}
int BinaryTree::height()
{
return height(root);
}
void BinaryTree::add(TreeNode * toAdd, int key)
{
if (key < toAdd->value) {
if (toAdd->left != NULL) {
add(toAdd->left, key);
}
else {
toAdd->left = new TreeNode(key);
toAdd->left->value = key;
toAdd->left->left = NULL;
toAdd->left->right = NULL;
}
}
else {
if (toAdd->right != NULL) {
add(toAdd->right, key);
}
else {
toAdd->right = new TreeNode(key);
toAdd->right->value = key;
toAdd->right->left = NULL;
toAdd->right->right = NULL;
}
}
}
int BinaryTree::height(TreeNode *node)
{
if (root == NULL) {
return 0;
}
else {
int leftSide = height(root->left);
int rightSide = height(root->right);
int total = leftSide + rightSide;
return total;
}
}
Main.cpp
#include "BinaryTree.h"
#include <iostream>
int main()
{
BinaryTree *tree = new BinaryTree();
tree->add(10);
tree->add(12);
tree->add(14);
tree->add(15);
tree->add(123);
tree->add(14);
tree->add(12);
tree->add(15);
tree->height();
return 0;
}