Adsl 3
Adsl 3
#include<queue>
class node
public:
int data;
node *left,*right;
node(int x)
data=x;
left=right=nullptr;
};
if(root==nullptr)
root=new node(x);
else if(x<root->data)
root->left=insert(x,root->left);
else if(x>root->data)
root->right=insert(x,root->right);
return root;
node *createBST()
{
node *root=nullptr;
int n,value;
cin>>n;
for(int i=0;i<n;i++)
cout<<"Node"<<i+1<<":";
cin>>value;
root=insert(value,root);
return root;
if(temp!=nullptr)
inorder(temp->left);
cout<<"\t"<<temp->data;
inorder(temp->right);
if(root==nullptr)
return;
queue<node*>q;
q.push(root);
while(!q.empty())
{
int levelSize=q.size();
for(int i=0;i<levelSize;++i)
node *current=q.front();
q.pop();
cout<<current->data<<"";
if(current->left!=nullptr)
q.push(current->left);
if(current->right!=nullptr)
q.push(current->right);
cout<<endl;
if(root==nullptr)
return;
cout<<root->data<<"";
return;
if(root->left!=nullptr)
printLeafNodes(root->left);
if(root->right!=nullptr)
printLeafNodes(root->right);
{
if(root==nullptr)
return 0;
int leftHeight=height(root->left);
int rightHeight=height(root->right);
return max(leftHeight,rightHeight)+1;
if(root==nullptr)
return nullptr;
swap(root->left,root->right);
mirror(root->left);
mirror(root->right);
return root;
int main()
node *root=createBST();
inorder(root);
cout<<endl;
printLevelOrder(root);
printLeafNodes(root);
cout<<endl;
node *mirroredRoot=mirror(root);
inorder(mirroredRoot);
cout<<endl;
printLevelOrder(mirroredRoot);
printLeafNodes(mirroredRoot);
cout<<endl;
return 0;