Implementar traversal pre-orden usando el programa C ++

recorrido

En este artículo, vamos a aprender, cómo poner en práctica pre-ordenar el uso de programa en C ++ ? Este programa contiene diferentes métodos, algoritmos y ejemplos.

En pre-orden transversal la raíz es primero para ser atravesado entonces el subárbol izquierdo y después el derecho subárbol es decir, en el NLR orden (Nodo Izquierda Derecha) donde Nodo es el nodo actual.

Aquí,
N (proceso de nodo es decir raíz actual)
L (recursivamente traverse subárbol izquierdo)
R (recursivamente traverse derecho subárbol)

un pre-orden transversal lata puede hacer de dos maneras:

1. por el método recursivo

Algoritmo:

preorder(root)
c. visit the root
a. Traverse the left subtree (preorder(root->left))
b. Traverse the right subtree (preorder(root->right))

2. por método no recursivo

Este método se implementa mediante el uso de la pila.

a. push the root into the stack
b. repeat while stack is not empty
1. pop an node from the stack and print it
2. push right child and then left child of the node into the stack

C ++ código para implementar pre-orden transversal

#include<iostream>
#include<stack>
using namespace std;

struct node
{
int info;
node *left,*right;
};

node *newNode(int n)
{
node *ptr=new node;
ptr->info=n;
ptr->left=ptr->right=NULL;
return ptr;
}

node *insert(node* node,int info)
{
if(node==NULL)
{
return newNode(info);
}
if(info < node->info)
{
node->left=insert(node->left,info);
}
else
{
node->right=insert(node->right,info);
}
return node;
}

void preorder(node *root)
{
if(root == NULL)
{
return ;
}
stack<node*> stack;
stack.push(root);
while(!stack.empty())
{
node *curr=stack.top();
cout<<curr->info<<" ";
stack.pop();
if(curr->right)
{
stack.push(curr->right);
}
if(curr->left)
{
stack.push(curr->left);
}
}
}
int main()
{
node* root=newNode(60);
insert(root,50);
insert(root,70);
insert(root,40);
insert(root,30);
insert(root,80);
insert(root,75);
insert(root,65);
insert(root,45);
insert(root,55);
insert(root,90);
insert(root,67);
cout<<"Preorder traversal :";

preorder(root);
cout<<endl;
return 0;
}

salida

Preorder traversal :60 50 40 30 45 55 70 65 67 80 75 90


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *