logo

Passagem de pré-encomenda

Neste artigo, discutiremos a travessia de pré-ordem na estrutura de dados. Estruturas de dados lineares, como pilha, array, fila, etc., só têm uma maneira de percorrer os dados. Mas em uma estrutura de dados hierárquica como árvore , existem várias maneiras de percorrer os dados.

Na travessia de pré-ordem, primeiro o nó raiz é visitado, depois a subárvore esquerda e depois a subárvore direita é visitada. O processo de passagem da pré-encomenda pode ser representado como -

 root → left → right 

O nó raiz é sempre percorrido primeiro na travessia de pré-ordem, enquanto é o último item da travessia de pós-ordem. A travessia de pré-ordem é usada para obter a expressão de prefixo de uma árvore.

As etapas para realizar a passagem da pré-encomenda estão listadas a seguir -

travessia de pré-encomenda de uma árvore
  • Primeiro, visite o nó raiz.
  • Então, visite a subárvore esquerda.
  • Por fim, visite a subárvore certa.

A técnica de passagem de pré-ordem segue o Raiz Esquerda Direita política. O próprio nome pré-encomenda sugere que o nó raiz seria percorrido primeiro.

Algoritmo

Agora, vamos ver o algoritmo de travessia de pré-ordem.

 Step 1: Repeat Steps 2 to 4 while TREE != NULL Step 2: Write TREE -> DATA Step 3: PREORDER(TREE -> LEFT) Step 4: PREORDER(TREE -> RIGHT) [END OF LOOP] Step 5: END 

Exemplo de passagem de pré-encomenda

Agora, vamos ver um exemplo de passagem de pré-encomenda. Será mais fácil entender o processo de passagem da pré-encomenda usando um exemplo.

Passagem de pré-encomenda

Os nós com cor amarela ainda não foram visitados. Agora, percorreremos os nós da árvore acima usando travessia de pré-ordem.

  • Comece com o nó raiz 40. Primeiro, imprimir 40 e então percorrer recursivamente a subárvore esquerda.
    Passagem de pré-encomenda
  • Agora, vá para a subárvore esquerda. Para a subárvore esquerda, o nó raiz é 30. Imprimir 30 e vá em direção à subárvore esquerda de 30.
    Passagem de pré-encomenda
  • Na subárvore esquerda de 30, existe um elemento 25, então imprimir 25 e percorra a subárvore esquerda de 25.
    Passagem de pré-encomenda
  • Na subárvore esquerda de 25, existe um elemento 15 e 15 não possui subárvore. Então, imprimir 15 e vá para a subárvore direita de 25.
    Passagem de pré-encomenda
  • Na subárvore direita de 25, há 28 e 28 não tem subárvore. Então, imprimir 28 e vá para a subárvore direita de 30.
    Passagem de pré-encomenda
  • Na subárvore direita de 30, há 35 que não possui subárvore. Então imprimir 35 e percorra a subárvore direita de 40.
    Passagem de pré-encomenda
  • Na subárvore direita de 40, há 50. Imprimir 50 e percorra a subárvore esquerda de 50.
    Passagem de pré-encomenda
  • Na subárvore esquerda de 50, há 45 que não têm filhos. Então, imprimir 45 e percorra a subárvore direita de 50.
    Passagem de pré-encomenda
  • Na subárvore direita de 50, há 60. Imprimir 60 e atravesse a subárvore esquerda de 60.
    Passagem de pré-encomenda
  • Na subárvore esquerda de 60, há 55 que não tem nenhum filho. Então, imprimir 55 e vá para a subárvore direita de 60.
    Passagem de pré-encomenda
  • Na subárvore direita de 60, há 70 que não têm filhos. Então, imprimir 70 e pare o processo.
    Passagem de pré-encomenda

Após a conclusão da passagem da pré-encomenda, o resultado final é -

40, 30, 25, 15, 28, 35, 50, 45, 60, 55, 70

java matemática aleatória

Complexidade da travessia da pré-encomenda

A complexidade de tempo da passagem da pré-encomenda é Sobre) , onde 'n' é o tamanho da árvore binária.

Considerando que a complexidade espacial da travessia da pré-ordem é O(1) , se não considerarmos o tamanho da pilha para chamadas de função. Caso contrário, a complexidade espacial da travessia da pré-ordem é Oh) , onde 'h' é a altura da árvore.

Implementação de travessia de pré-pedido

Agora, vamos ver a implementação do percurso de pré-ordem em diferentes linguagens de programação.

Programa: Escreva um programa para implementar a travessia de pré-ordem em linguagem C.

feijão java
 #include #include struct node { int element; struct node* left; struct node* right; }; /*To create a new node*/ struct node* createNode(int val) { struct node* Node = (struct node*)malloc(sizeof(struct node)); Node->element = val; Node->left = NULL; Node->right = NULL; return (Node); } /*function to traverse the nodes of binary tree in preorder*/ void traversePreorder(struct node* root) { if (root == NULL) return; printf(' %d ', root->element); traversePreorder(root->left); traversePreorder(root->right); } int main() { struct node* root = createNode(40); root->left = createNode(30); root->right = createNode(50); root->left->left = createNode(25); root->left->right = createNode(35); root->left->left->left = createNode(15); root->left->left->right = createNode(28); root->right->left = createNode(45); root->right->right = createNode(60); root->right->right->left = createNode(55); root->right->right->right = createNode(70); printf('
 The Preorder traversal of given binary tree is -
'); traversePreorder(root); return 0; } 

Saída

Após a execução do código acima, a saída será -

Passagem de pré-encomenda

Programa: Escreva um programa para implementar a travessia de pré-ordem em C++.

 #include using namespace std; struct node { int element; struct node* left; struct node* right; }; /*To create a new node*/ struct node* createNode(int val) { struct node* Node = (struct node*)malloc(sizeof(struct node)); Node-&gt;element = val; Node-&gt;left = NULL; Node-&gt;right = NULL; return (Node); } /*function to traverse the nodes of binary tree in preorder*/ void traversePreorder(struct node* root) { if (root == NULL) return; cout&lt;<' '<element<left); traversepreorder(root->right); } int main() { struct node* root = createNode(39); root-&gt;left = createNode(29); root-&gt;right = createNode(49); root-&gt;left-&gt;left = createNode(24); root-&gt;left-&gt;right = createNode(34); root-&gt;left-&gt;left-&gt;left = createNode(14); root-&gt;left-&gt;left-&gt;right = createNode(27); root-&gt;right-&gt;left = createNode(44); root-&gt;right-&gt;right = createNode(59); root-&gt;right-&gt;right-&gt;left = createNode(54); root-&gt;right-&gt;right-&gt;right = createNode(69); cout&lt;<'
 the preorder traversal of given binary tree is -
'; traversepreorder(root); return 0; } < pre> <p> <strong>Output</strong> </p> <p>After the execution of the above code, the output will be -</p> <img src="//techcodeview.com/img/ds-tutorial/25/preorder-traversal-14.webp" alt="Preorder Traversal"> <p> <strong>Program:</strong> Write a program to implement preorder traversal in C#.</p> <pre> using System; class Node { public int value; public Node left, right; public Node(int element) { value = element; left = right = null; } } class BinaryTree { Node root; BinaryTree() { root = null; } void traversePreorder(Node node) { if (node == null) return; Console.Write(node.value + &apos; &apos;); traversePreorder(node.left); traversePreorder(node.right); } void traversePreorder() { traversePreorder(root); } static void Main() { BinaryTree bt = new BinaryTree(); bt.root = new Node(38); bt.root.left = new Node(28); bt.root.right = new Node(48); bt.root.left.left = new Node(23); bt.root.left.right = new Node(33); bt.root.left.left.left = new Node(13); bt.root.left.left.right = new Node(26); bt.root.right.left = new Node(43); bt.root.right.right = new Node(58); bt.root.right.right.left = new Node(53); bt.root.right.right.right = new Node(68); Console.WriteLine(&apos;Preorder traversal of given binary tree is - &apos;); bt.traversePreorder(); } } </pre> <p> <strong>Output</strong> </p> <p>After the execution of the above code, the output will be -</p> <img src="//techcodeview.com/img/ds-tutorial/25/preorder-traversal-15.webp" alt="Preorder Traversal"> <p> <strong>Program:</strong> Write a program to implement preorder traversal in Java.</p> <pre> class Node { public int value; public Node left, right; public Node(int element) { value = element; left = right = null; } } class PreorderTraversal { Node root; PreorderTraversal() { root = null; } void traversePreorder(Node node) { if (node == null) return; System.out.print(node.value + &apos; &apos;); traversePreorder(node.left); traversePreorder(node.right); } void traversePreorder() { traversePreorder(root); } public static void main(String args[]) { PreorderTraversal pt = new PreorderTraversal(); pt.root = new Node(37); pt.root.left = new Node(27); pt.root.right = new Node(47); pt.root.left.left = new Node(22); pt.root.left.right = new Node(32); pt.root.left.left.left = new Node(12); pt.root.left.left.right = new Node(25); pt.root.right.left = new Node(42); pt.root.right.right = new Node(57); pt.root.right.right.left = new Node(52); pt.root.right.right.right = new Node(67); System.out.println(); System.out.println(&apos;Preorder traversal of given binary tree is - &apos;); pt.traversePreorder(); System.out.println(); } } </pre> <p> <strong>Output</strong> </p> <p>After the execution of the above code, the output will be -</p> <img src="//techcodeview.com/img/ds-tutorial/25/preorder-traversal-16.webp" alt="Preorder Traversal"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <hr></'
></'>

Saída

Após a execução do código acima, a saída será -

Passagem de pré-encomenda

Programa: Escreva um programa para implementar a travessia de pré-ordem em Java.

10 milhões
 class Node { public int value; public Node left, right; public Node(int element) { value = element; left = right = null; } } class PreorderTraversal { Node root; PreorderTraversal() { root = null; } void traversePreorder(Node node) { if (node == null) return; System.out.print(node.value + &apos; &apos;); traversePreorder(node.left); traversePreorder(node.right); } void traversePreorder() { traversePreorder(root); } public static void main(String args[]) { PreorderTraversal pt = new PreorderTraversal(); pt.root = new Node(37); pt.root.left = new Node(27); pt.root.right = new Node(47); pt.root.left.left = new Node(22); pt.root.left.right = new Node(32); pt.root.left.left.left = new Node(12); pt.root.left.left.right = new Node(25); pt.root.right.left = new Node(42); pt.root.right.right = new Node(57); pt.root.right.right.left = new Node(52); pt.root.right.right.right = new Node(67); System.out.println(); System.out.println(&apos;Preorder traversal of given binary tree is - &apos;); pt.traversePreorder(); System.out.println(); } } 

Saída

Após a execução do código acima, a saída será -

Passagem de pré-encomenda

Então, isso é tudo sobre o artigo. Espero que o artigo seja útil e informativo para você.