Ask your own question, for FREE!
Computer Science 13 Online
OpenStudy (anonymous):

I am looking for implementation of ordinary binary tree, not binary search tree. here is example how it should look 1 2 5 4 3 3

OpenStudy (anonymous):

of course, in c

OpenStudy (anonymous):

and possibly with recursion if possible

OpenStudy (anonymous):

why of course in c, is c the only language in teh world? http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/tree.html

OpenStudy (anonymous):

this is binary search tree, not binary tree

OpenStudy (anonymous):

maybe but it says building binary tree

OpenStudy (anonymous):

yes, but if it is putting smaller numbers on left, and grater on right, this is binary search tree

OpenStudy (anonymous):

When you say implementation, do you mean the creation of the tree? Or do you want to be able to search it as well? Given that you have an unordered tree, your solution will involve some form of traversal O(n). As for creating the tree, I assume you want to keep it balanced. One possible solution is modifying the BST implementation. If you assign each Node a weight (which would represent the number of nodes beneath it), traverse the tree with smaller weights.

OpenStudy (anonymous):

You would have to create a node with three entries, value,pointer to left, and pointer to right. Then with that implementation you could create the population, and search algorithms.

OpenStudy (anonymous):

http://rosettacode.org/wiki/Tree_traversal

OpenStudy (anonymous):

i made it. implementation is based on bfs search algorithm typedef struct node { int data; struct node *right; struct node *left; }mynode; void add(mynode **root,int data){ mynode *new=malloc(sizeof(mynode)); new->data=data; new->left=NULL; new->right=NULL; mynode *queue[200]={NULL}; int head=-1; int tail=-1; mynode *current; if(*root==NULL){ *root=new; return; } else{ queue[++tail]=*root; while(head!=tail){ current=queue[++head]; if(current->left!=NULL) queue[++tail]= current->left; if(current->right!=NULL) queue[++tail]= current->right; if(current->left==NULL) { current->left=new; return;} if(current->right==NULL) {current->right=new;return;} } } }

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!