1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
aliina [53]
4 years ago
8

Write a program that reads numbers from a file (or allow user to input data) and creates an ordered binary tree. The program sho

uld display the tree in a text or graphics format then allow user to add values to it, or remove/delete values from it. The program should also allow the user to print the tree in different order forms (LNR, NLR, LRN).
Computers and Technology
1 answer:
IgorLugansk [536]4 years ago
7 0

Answer:

See explaination

Explanation:

include<bits/stdc++.h>

using namespace std;

typedef struct Node

{

int data;

struct Node *left,*right;

}Node;

bool search(Node *root,int data)

{

if(root==NULL)

return false;

if(root->data==data)

return true;

queue<Node*> q;

q.push(root);

while(!q.empty())

{

Node *temp=q.front();

q.pop();

if(temp->data==data)

return true;

if(temp->left)

q.push(temp->left);

if(temp->right)

q.push(temp->right);

}

return false;

}

Node *insert(Node *root,int data)

{

if(root==NULL)

{

Node *temp=new Node();

temp->data=data;

temp->left=NULL;

temp->right=NULL;

return temp;

}

if(data < root->data)

root->left=insert(root->left,data);

if(data>root->data)

root->right=insert(root->right,data);

return root;

}

Node *get_smallest_element_right_subtree(Node *root)

{

while(root && root->left!=NULL)

root=root->left;

return root;

}

Node *delete_node(Node *root,int data)

{

if(root==NULL)

return root;

if(data < root->data)

root->left=delete_node(root->left,data);

else if(data > root->data)

root->right=delete_node(root->right,data);

else

{

if(root->left==NULL) //If right only presents means - delete the curr node and return right node

{

Node *temp=root->right;

free(root);

return temp;

}

else if(root->right==NULL) //If left only presents means - delete the curr node and return let node

{

Node *temp=root->left;

free(root);

return temp;

}

else

{

Node *temp=get_smallest_element_right_subtree(root->right);

root->data=temp->data;

root->right=delete_node(root->right,temp->data);

}

return root;

}

}

void inorder(Node *root)

{

if(root!=NULL)

{

inorder(root->left);

cout<<root->data<<" ";

inorder(root->right);

}

}

void postorder(Node *root)

{

if(root!=NULL)

{

inorder(root->left);

inorder(root->right);

cout<<root->data<<" ";

}

}

void preorder(Node *root)

{

if(root!=NULL)

{

cout<<root->data<<" ";

inorder(root->left);

inorder(root->right);

}

}

int main()

{

fstream f;

string filename;

cout<<"\n\n1 - Input through File ";

cout<<"\n\n2 - Input through your Hand";

int h;

cout<<"\n\n\nEnter Your Choice : ";

cin>>h;

Node *root=NULL; // Tree Declaration

if(h==1)

{

cout<<"\n\nEnter the Input File Name : ";

cin>>filename;

f.open(filename.c_str());

if(!f)

cout<<"\n\nError in Opening a file !";

else

{

cout<<"\n\nFile is Being Read ........";

string num;

int value;

int node=0;

while(f>> num)

{

value=stoi(num);

root=insert(root,value);

node++;

}

cout<<"\n\nTree has been successfully created with : "<<node<<" Nodes"<<endl;

}

}

if(h==2)

{

int y;

cout<<"\n\nEnter the Total No of Input :";

cin>>y;

int i=1,g;

while(i!=y+1)

{

cout<<"\n\nEnter Input "<<i<<" : ";

cin>>g;

root=insert(root,g);

i++;

}

cout<<"\n\nTree has been successfully created with : "<<y<<" Nodes"<<endl;

}

if(h>=3)

{

cout<<"\n\nInvalid Choice !!! ";

return 0;

}

int n=0;

while(n!=6)

{

cout<<"\n\n\n1 - Insert Element";

cout<<"\n\n2 - Remove Element";

cout<<"\n\n3 - Inorder (LNR) Display ";

cout<<"\n\n4 - Pre (NLR) Order Display";

cout<<"\n\n5 - Post (LRN) Order Display";

cout<<"\n\n6 - Quit";

cout<<"\n\nEnter Your Choice : ";

cin>>n;

switch(n)

{

case 1:

{

int k;

cout<<"\n\nEnter Element to insert : ";cin>>k;

root=insert(root,k);

cout<<"\n\nElement Sucessfully Inserted !!!!!";

break;

}

case 2:

{

int k;

cout<<"\n\nEnter Element to Remove : ";

cin>>k;

if(search(root,k))

{

root=delete_node(root,k);

cout<<"\n\nValue Successfully Deleted !!!";

}

else

cout<<"\n\n!!!!!!!!!!!!!!!!!!!! No Such Element !!!!!!!!!!!!!!!!!!!!!!";

break;

}

case 3:

{

cout<<"\n\nThe Elements (LNR) are : ";

inorder(root);

break;

}

case 4:

{

cout<<"\n\nThe Elements (NLR) are : ";

preorder(root);

break;

}

case 5:

{

cout<<"\n\nThe Elements (LRN) are : ";

postorder(root);

break;

}

case 6:

{

break;

}

}

}

cout<<"\n\nBye!!!! See You !!!"<<endl;

You might be interested in
What happens when you send a fax to a phone?
DiKsa [7]
The message is received?
4 0
4 years ago
Once multiple layers are selected which keyboard shortcut merges them
guajiro [1.7K]

Considering the computer system analysis, when the multiple layers are selected, the keyboard shortcut that merges them is "<u>Ctrl+E for (Windows) or Command+E for (Macbook)."</u>

<h3>What Keyboard Shortcut?</h3>

Keyboard Shortcut combines keyboard keys to ensure software programs perform specific functions.

Keyboard Shortcuts can be made by a Computer manufacturer as part of the standard functionality of the operating system or application program or made explicitly by the user in a scripting language.

Keyboard Shortcut is different in both Windows and Macbook Operating systems.

Hence, in this case, it is concluded the correct answer is "Ctrl+E for (Window) / Command+E for (Macbook)."

Learn more about Keyboard shortcuts here: brainly.com/question/14447287

4 0
2 years ago
Disadvantage do you think one can have if he or she does use electronic media
Dima020 [189]
- discontinuity
- dependence on the electric power
and more
6 0
3 years ago
Critical thinking questions Giving 30 points if you answer correctly!!!!
krek1111 [17]

Answer:

1. The reason hunting seasons are displayed all over the world in cave paintings is because of the necessity to hunt. Ancient people everywhere were nomads that relied on wild animals for the majority of their calories. The paintings likely served as an expression of the importance of hunting to their culture. It could have also been used as educational material for very young children to learn about hunting as well as its importance to their community.

Explanation:

I can't do 2nd because the image was cut off, sorry.

8 0
3 years ago
If you have a long title for a table and need it to span several cells you use
dsp73
If you are talking about on Microsoft Excel then you merge the cells.
6 0
3 years ago
Other questions:
  • Andrea wants to to install a new internet connection . she eants to use the fastest one she can find . what are the maximum spee
    14·1 answer
  • Which element in Access is an ideal data source?
    12·2 answers
  • Which is the lowest Complexity"
    15·1 answer
  •                                                        HELP PLEASE 
    12·2 answers
  • What chage command should you enter at the comman prompt to set the password to jsmith expire after 60 days and gives a warning
    12·1 answer
  • If a windows computer belongs to a domain, all security is managed by the network administrator for the entire network. true
    15·1 answer
  • How is an image represented
    15·2 answers
  • Describe in detail how to determine if a source is credible when conducting research. Justify your response using two or more co
    8·1 answer
  • Which three factors should be discussed before planning and building a project?
    15·1 answer
  • Write down a scratch program which:
    5·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!