Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Its all about C++ Binary Trees

  1. Oct 31, 2006 #1
    I'm trying to write an address book that is based on a binary tree. I'm devloping in Visual C++ (I blew up my Ubuntu with the new dist), starting with the basics:

    Code (Text):

    #ifndef binarySearchTree_h
    #define binarySearchTree_h

    #include <string>
    #include <iostream>

    using namespace std;

    //Define the node
    struct treeNode
    //An object of type TreeNode
    {
        string data;
        struct node* left;
        struct node* right;

    treeNode(string str)
    //constructor: Make a node containing str.
    {
        data = str;
        left = NULL;
        right = NULL;
    }

    };

    //define the class
    class binarySearchTree
    {
    public:
        binarySearchTree();
            //constructor
        bool isEmpty() const;
                     //
        bool treeContains(treeNode *root, string data);
            //return true if item is one of the items in the
            //binary sort tree to which root points. Return
            //false if not


    protected:
        treeNode *root;
       
    };
    #endif
     
    my problem is in the implementation file in the treecontains() function:

    Code (Text):

    #include "binarySearchTree.h"

    #include <string>
    #include <iostream>

    using namespace std;

    binarySearchTree::binarySearchTree() :root(NULL)
    {
    }
    bool binarySearchTree::isEmpty() const
            //return true if tree is empty
    {
        return (root == NULL);
    }
    bool binarySearchTree::treeContains(treeNode *root, string data)    
            //return true if item is one of the items in the
            //binary sort tree to which root points. Return
            //false if not
        {
            if(root==NULL)
                //tree is empty
            {
                    return false;
            }
            if(data==root->data)
                //item has been found
            {
                return true;
            }

           
            if(data < root->data)
                //item is in left subtree
            {
                return treeContains(root->left, data);  //error
            }
            else
                //item is in right subtree
            {
                return treeContains(root->right, data); //error
            }

        } //end treeContains()

     
    I get an error that says:

    Compiling...
    test.cpp
    binarySearchTree.cpp
    c:\program files\microsoft visual studio\myprojects\binaryaddressbook\binarysearchtree.cpp(41) : error C2664: 'treeContains' : cannot convert parameter 1 from 'struct node *' to 'struct treeNode *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    c:\program files\microsoft visual studio\myprojects\binaryaddressbook\binarysearchtree.cpp(46) : error C2664: 'treeContains' : cannot convert parameter 1 from 'struct node *' to 'struct treeNode *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Error executing cl.exe.

    binaryAddressBook.exe - 2 error(s), 0 warning(s)

    Here is my test file:

    Code (Text):

    #include "binarySearchTree.h"

    #include <iostream>

    using namespace std;

    int main()
    {

        treeNode *root;  //pointer to the root noode in the tree
        root = NULL;  //start with an empty tree



        return 0;
    }
     
    as you can see it doesn't do anything, but get the constructors working.

    please help so I can get this thing going?

    thank you
     
    Last edited: Oct 31, 2006
  2. jcsd
  3. Oct 31, 2006 #2

    0rthodontist

    User Avatar
    Science Advisor

    It's been years since I've used C++ but I think you should have struct treeNode* left; and struct treeNode* right;.
     
  4. Nov 1, 2006 #3
    Yep: TreeNode needs pointers to TreeNode, not pointers to struct node.

    Cheers,
    Tim
     
  5. Nov 1, 2006 #4
    You are so right!!! Thank you!
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Its all about C++ Binary Trees
  1. Binary tree algoritms (Replies: 5)

  2. Binary Search Tree C++ (Replies: 1)

  3. Binary tree (Replies: 5)

Loading...