C++ :: Adding Mathematical Expression In Binary Tree

Jul 23, 2013

I want to add mathematical expression in a binary tree but I have some problems with the algorithm. I found this one:

-If the current token is a '(', add a new node as the left child of the current node, and descend to the left child.
-If the current token is in the list ['+','-','/','*'], set the root value of the current node to the operator represented by the current token. Add a new node as the right child of the current node and descend to the right child.
-If the current token is a number, set the root value of the current node to the number and return to the parent.
-If the current token is a ')', go to the parent of the current node.

Here is the code that I made so far:

template<class T>
void Tree<T>::Expr(Node<T> *node, char expr[], int &i) {
i++;
T x = expr[i];
if(x == '(') {
node = node->Left;

[Code] ....

I know that it is a big mess and it doesn't follow the algorithm but this is the problem. For example if the token is '(' I go to the left child of the current node. Then lets say that the next token in the expression is a number. I add this number to the current node and I must go back. But how can I go back to the parent? I will go back to line 13 and the program will end. What should be the structure that I must use?

View 1 Replies


ADVERTISEMENT

C++ :: Evaluate Mathematical Expression That Is Already Formed In Binary Search Tree

Apr 23, 2013

The point of my code is to evaluate a mathematical expression that's already formed in a Binary Search Tree. : ((6+5)-3)*(2/1)=?

I've read other forums and they usually use cout, cin and << >> but I'm still in the learning process so this is basically primitive coding.

Anyway, The recursion is already correct (I think). My problem is how to return char* or should I say an element which has 2 or more digits.

typedef struct cell{
char elem[max];
struct cell *left;
struct cell *right;
}celltype, *node;
node A;
char* evaluate(node *A) //passed as evaluation(&A);

[Code] ....

And the reason that I'm using char is because the operators are also elements in different nodes.

The code above is actually the result when I remembered that you can't return 2-digit char.

The code below is before I remembered that. It works when all results are 1 digit numbers.

typedef struct cell{
char elem;
struct cell *left;
struct cell *right;
}celltype, *node;
node A;

[Code] ....

View 1 Replies View Related

C/C++ :: Tokenize Mathematical Expression - Garbage Value In String

Feb 14, 2014

I wrote a program that tries to tokenize a mathematical expression, inserting the tokens in a list of strings. The list is as follows:

typedef struct listOfStrings {
    char **array;
    int size;
} ListOfStrings;

There is even a function to initialize the listOfStrings. The thing is: I'm printing a token every time it is complete and every time it is inserted in the list. The output is okay. However, when all tokens are processed and I call function print_list_of_strings to print the tokens again, the first token is printed with a leading garbage value if the input for the program is "3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3". How is this possible? The code for printing the list is as follows:

void print_list_of_strings( const ListOfStrings *const lPtr ) {
    int i;
    int numberOfElements = lPtr->size;  
    if ( numberOfElements != 0 ) {
        for ( i = 0 ; i < numberOfElements ; ++i ) {

[Code] ....

The list just prints --- if it's empty, although this isn't the case for the program I'm writing. Also, if the input is "1 + 2", everything goes fine. The code for inserting at the list is:

int insert_at_end_of_list_of_strings( ListOfStrings *lPtr, const char *const str ){
    int lengthOfStr = strlen( str );
    int numberOfElements = lPtr->size;  
    if ( ( ( *( lPtr->array + numberOfElements ) ) = ( char * )malloc( ( lengthOfStr + 1 ) *
 
[Code] ....

View 5 Replies View Related

C/C++ :: Find Maximum Element From A Tree (not A Binary Tree)

Oct 31, 2014

I want to find maximum element from a tree (not a binary tree ) ???? ...using c language...

View 1 Replies View Related

C++ :: Constructors / Classes For Expression Tree Program

May 7, 2012

Previously I made a infix postfix calculator with integers only using structures, which had only three files

1.main.cpp,
2.arithmetic_expression.cpp
3.arithmetic expression.h,

I manged eventually to bring it together. now there are 5 files which are using classes, constructors and destructors and there can be letters in the expression that can have assigned values. Newnode, struct node and all that fine and dandy stuff made sense, this doesn't. What needs to be done in those empty functions in arethmetic_expression.cpp? It was going well until I reached createxpressiontree{ in th arithemetic_expression.cpp and those constructors in there. At that point I missed my structures and was totally confused by the constructors. I know constructors are supposed to create objects, but then I dont know what i am creating the object for and what that object is supposed to do.

1.main.cpp
2.arithmetic_expression.cpp
3.tree.cpp
4.arithmetic_expression.h
5.tree.h

Main.cpp

Code:

#include <iostream>
#include <string>
#include <vector>
#include "arithmetic_expression.h"
#include <map>
int main() {
// arithmetic_expression expression1;
// Testing the RPN input

[Code] .....

View 1 Replies View Related

C++ :: Adding Element Into N-ary Tree

Dec 16, 2014

Currently I'm implementing a T9 (predective text) project in c++ using n-ary Trees. I've never used the n-ary tree before so I really have some difficulties

I have to add words into the tree, knowing that each node of the tree contains a linked list (for the words) and a vector of pointers to access the next node

the words should be stockes in the different nodes according to their T9 code and then when the user insert a number, my program should display all the words corresponds to that code. For example the code: 4663 matches "good" "home" "gone" ...and so on...

I would like to understand how can I add the words into the Tree and how can I display them later

Here are my structs :

struct NodeList{
string data;
NodeList * next;
};
struct List{
NodeList *head;

[Code] ....

How can I add the words and display them...

View 8 Replies View Related

C/C++ :: Printing Binary Expression Trees

Mar 18, 2014

I am working on a program that needs to take any infix expression as an input. And the display the expression tree of it on the console as an output. For example the input goes (a+-(c*d) should output:

-
+ *
a b c d

View 1 Replies View Related

C/C++ :: Invalid Operands To A Binary Expression

Jul 19, 2014

I've created a class that works with vectors doing various calculations and what not. I have overloaded operators that I've created outside of the main in separate header and class files. Ive tested them and the overloaded operators work correctly when I paste them into a the main file but when I have them defined in the other class files and I try to access them in the main class I get an error saying invalid operands to a binary expression. I also have other classes with overloaded operators that work just fine in the main class so I'm not sure what I did wrong here?

This is how I have my header set up, the definitions to these are in a separate class file which I don't think I need to include considering I have them tested and working so I don't think that's the problem (correct me if I'm wrong).

class VectorClass{
friend vector<float> operator+( const vector<float>&, const vector<float>& );
friend vector<float> operator...
friend vector<float> operator...
private:
...
...
public:
...

And then in my main class looks vaguely like this

#include "Name of vector class"
int main(){
vector<float> vR, v1, v2;
v1.push_back('some value');
...
v2.push_back('some value');
...
vR = v1 + v2; // Invalid operands here
return 0;
}

And like I said, I have other classes with overloaded operators set up the same way which work fine being implemented the way I have these, so I'm not sure where the problem is at.

View 2 Replies View Related

C++ :: Create Binary Search Tree Template To Be Used To Create AVL Tree

Feb 10, 2013

For my data-structures class, I am attempting to create a binary search tree template to be used to create an AVL tree. I've written a Generic_Tree template for the BST to inherit from, and before I jump into implementing the AVL tree I'm testing the BST member functions. Everything was compiling fine until I added the BST insert() function. Now, I'm getting the following error message from my linker:

undefined reference to 'BST<void>::insert(int, void*)'

Stemming from the call in main line 16.

my makefile compiles with:
g++ -Wall -g Generic_Tree.cpp BST.cpp barfing.cpp main.cpp

Generic_Tree:

template < typename NODE_DATA, unsigned MAX_KIDS >
class Tree {
protected:
struct NODE {
NODE_DATA* contents;
Tree* child[MAX_KIDS];
Tree* parent;

[Code] ....

I'm use to c and havn't used classes or templates before (except for declaring instances of them). The whole syntax is mystifying to me,.

View 4 Replies View Related

C++ :: Printing A Binary Tree?

Feb 1, 2014

It only prints out the root in an infinite loop.

Code: void Btree::printTree(Node* tree)
{
tree=root;
if (tree != NULL)
{
std::cout<<" "<< tree->key;
printTree(tree->left);
printTree(tree->right);
}
}

View 5 Replies View Related

C++ :: Search Binary Tree

Aug 12, 2014

It has been a while since I built a binary tree from scratch so I decided to do it. Everything works fine but this one function. When I enter a number to search it just keeps running and allowing me to keep enter numbers.

Code:
void tree::search(int key,Node* leaf) {
if (leaf == NULL) {
std::cout<<"The tree is empty

[Code] ......

View 3 Replies View Related

C :: Function Max In Binary Tree

May 28, 2013

I have a problem with the C code . I created two functions, one that runs through the tree inorder, the other that returns the maximum value in the tree. The problem is when I use in the main the method "max", which goes in a loop and not print anything on the screen . If I remove the call to method "max" it works fine. Here's the code:

Code:

#include<stdio.h>
#include<stdlib.h>
#define bool int
/* A binary tree tNode has data, pointer to left child
and a pointer to right child */
struct tNode {

[Code]...

View 13 Replies View Related

C++ :: Binary Tree Source?

Jul 12, 2013

I just want to ask if some of you know good source for learning about Binary Trees.

View 2 Replies View Related

C/C++ :: Searching A Binary Tree?

Mar 1, 2015

I've almost got my code working. My issue is, if I type in either one of the first two id numbers, it finds the person and displays as it's supposed to, however if I type any of the last 6 id numbers it says id not found. I've been staring at this forever and can't see what I'm missing />/> ps, I haven't added in all my comments yet Binary tree template

//Binray tree template class
#ifndef BINARYTREE_H
#define BINARYTREE_H

[Code].....

View 14 Replies View Related

C/C++ :: How To Print Binary Tree

Jan 14, 2015

I want to print binary tree in this form on screen

1
/
2 3
/ /
4 5 6 7
/ /
8 9 10 11

This is the code for creating Binary Tree:

#include<stdio.h>
struct node
{
int data;
struct node *right;
struct node *left;
};
struct node *root = NULL;
int main ()
{
struct node *child, *temp;

[Code]...

View 12 Replies View Related

C++ :: How To Build Binary Tree With Values

Dec 29, 2013

I am not sure how to build the tree with values:

Code:
struct Node *root = 1 root->left = 2
root->right = 3
root->left->left = 4;
root->left->right = 5;

Everything should be right except the main(). How to demonstrate this program correctly?

Code:
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include <stack> // std::stack

[Code] .....

View 8 Replies View Related

C++ :: Copy Control Of Binary Tree

May 17, 2013

I have implemented a copy control version of binary tree.. As I am a Beginner. I think i have made my mistake.

Code:
#include <iostream>
#include <string>
class TreeNode{
TreeNode(const std::string &val):value(val),count(new int(1)){}
TreeNode(const TreeNode& rhs):value(rhs.value),count(count),left(rhs.left),right(rhs.right){++*count; }

[Code] ......

View 11 Replies View Related

C++ :: Binary Search Tree With Templates?

Oct 27, 2014

I am trying to implement BST using templates. This is the code that i have written.

Code: template <class T>
struct node
{
struct node *left;

[Code].....

There are no errors but the program hangs. What is the mistake with this program ?

View 2 Replies View Related

C :: Find Sum Of Depths In Binary Tree

Jun 18, 2013

I need to write a program to find the sum of depths of a binary tree, where a depth is by definition the shortest distance between a node and the root. I am required to code this using recursion.

I was thinking of first coding a helper recursion to find the depth for each node. What would be the best way to do that? If I could move from the node to the root, I believe programming this helper recursion would not be very difficult. Is there a way to progress from the node to the root?

View 11 Replies View Related

C :: Binary Tree Insert Function

Mar 31, 2014

I am having trouble writing an insert function for a binary tree.

Here is the structure that I have to use.

I have the print function done, the insert function is the one I am having trouble with,

Code:

typedef struct bt_{
int value;
struct bt_ *right;
struct bt_ *left;
}BST;

[Code].....

View 10 Replies View Related

C :: Deleting Binary Tree Node?

Feb 18, 2014

I am having trouble with my deleteNode function, using recursion I am trying to delete a node from a binary tree. My tree is displayed as the following...

Tree: (node)->[left child, right child]
(k)->[g,p]
(g)->[c,h]
(c)->[ ,e]

[Code]....

The result did show that it is erased but when I try to add the erase node "t" back into the tree it still exist. I am stumped on what to do when using recursion way of deleting node.

View 4 Replies View Related

C++ :: Height Or Depth Of Binary Tree

Feb 23, 2014

I'm in interested to know what will be the height of binary tree with say 5 nodes (consider it balanced) is it 2 or 3?

9
/
5 13
/
3 7

and for following tree also:

2
/
7 5
/
2 6 9
/ /
5 11 4

is it 3 or 4?

i'm asking because, not able to find correct/one answer.

the algorithm i find is:

depth(struct tree*t) {
if ( t == NULL) return 0;
return max( depth(tree->left), depth(tree->right) ) + 1;
}

According to it, ans for second will be 4

But as per image on wikipedia [URL] .... the ans is 3

View 6 Replies View Related

C++ :: How To Insert Item Into Binary Tree

Jun 30, 2013

I am trying to write a function that inserts an item into this binary tree in C++.

template <typename T>
struct BTree {
T val;
BTree<T>* left;
BTree<T>* right;
BTree(T v, BTree<T>* l=nullptr, BTree<T>* r=nullptr) :
val(v), left(l), right(r) {}
};

Here's my attempt.

template <typename T>
void insert(BTree<T>* tree, T item) {
if (tree == nullptr) {
tree = new BTree<T>(item);
} else if (item < tree->val) {
insert(tree->left, item);
} else {
insert(tree->right, item);
} }

I think this function may not be working because I am modifying `tree`, which is a local variable. How do I actually modify the current pointer that `tree` represents, not just `nullptr`?

View 2 Replies View Related

C++ :: Reading TXT File Into Binary Tree

May 30, 2013

How to store values from a .txt file delimited with semicolons (;) into a class which is then stored into a Binary Search Tree. After browsing Google for a few hours, and trying various examples of people using Vectors, I just can't seem to get my program to work using Object Oriented Programming with an instance of the class Person.

My two classes are Person, and BinarySearchTree as follows:

class Person{
private:
string first_surname;
string second_surname;
string name;
int ID;

[Code] ....

Ok so my text file saves the data of each person in the same order as the class with each value separated by a semicolon.

i.e. First_Surname;Second_Surname;Name;ID;Telephone;Score;

void fillTree( BinarySearchTree *b) {
string input[7];
Person p;
fstream file("scores.txt", ios::in); // reads text file
if(file.is_open()) {

[Code] ....

I understand that I get an error because a vector is saved as integers, and I am using strings, my question is, any other way to read the .txt file and save each data separated by a semicolon, into the Person class?

View 2 Replies View Related

C++ :: Storing 234 Tree In Binary File

Mar 20, 2014

How would I store a 234 tree in a binary file?

I've never worked with trees or binary files before so it is very confusing.

View 18 Replies View Related

C++ :: How To Implement binary Tree Using A Class

Aug 23, 2013

I'm trying to implement a binary tree using this class:

class btree {
public:
int key;
btree *left;
btree *right;
btree(){left=NULL; right=NULL;}
void insert(int key);

[Code] ....

gives me the following error:

albero_binario1.cpp: In member function ‘void btree::insert(int)’:
albero_binario1.cpp:34:18: error: lvalue required as left operand of assignment
albero_binario1.cpp:39:15: error: request for member ‘insert’ in ‘((btree*)this)->btree::right’, which is of non-class type ‘btree*’
albero_binario1.cpp:41:14: error: request for member ‘insert’ in ‘((btree*)this)->btree::left’, which is of non-class type ‘btree*’

what can i do?

View 6 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved