logo

Travessia de ordem postal

Neste artigo, discutiremos a travessia pós-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. Portanto, discutiremos aqui outra maneira de percorrer a estrutura de dados em árvore, ou seja, passagem de pedidos por correio . O percurso pós-ordem é uma das técnicas de percurso utilizadas para visitar o nó da árvore. Segue o princípio LRN (nó esquerdo-direito) . A travessia pós-ordem é usada para obter a expressão pós-fixada de uma árvore.

que meses são o primeiro trimestre

As etapas a seguir são usadas para realizar o percurso pós-ordem:

  • Percorra a subárvore esquerda chamando a função de pós-ordem recursivamente.
  • Percorra a subárvore direita chamando a função de pós-ordem recursivamente.
  • Acesse a parte de dados do nó atual.

A técnica de travessia de pós-ordem segue o Raiz Esquerda Direita política. Aqui, Raiz Esquerda Direita significa que a subárvore esquerda do nó raiz é percorrida primeiro, depois a subárvore direita e, finalmente, o nó raiz é percorrido. Aqui, o próprio nome Postorder sugere que o nó raiz da árvore seria finalmente percorrido.

Algoritmo

Agora, vamos ver o algoritmo de travessia pós-ordem.

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

Exemplo de passagem de pedido por correio

Agora, vamos ver um exemplo de travessia pós-ordem. Será mais fácil entender o processo de travessia pós-ordem usando um exemplo.

Travessia de ordem postal

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

  • Aqui, 40 é o nó raiz. Primeiro visitamos a subárvore esquerda de 40, ou seja, 30. O nó 30 também percorrerá em pós-ordem. 25 é a subárvore esquerda de 30, portanto também é percorrida na pós-ordem. Então 15 é a subárvore esquerda de 25. Mas 15 não tem subárvore, então imprimir 15 e vá em direção à subárvore direita de 25.
    Travessia de ordem postal
  • 28 é a subárvore correta de 25 e não tem filhos. Então, imprimir 28 .
    Travessia de ordem postal
  • Agora, imprimir 25 , e o percurso pós-ordem para 25 está terminado.
    Travessia de ordem postal
  • Em seguida, vá em direção à subárvore direita de 30. 35 é a subárvore direita de 30 e não tem filhos. Então, imprimir 35 .
    Travessia de ordem postal
  • Depois disso, imprimir 30 , e o percurso pós-ordem para 30 está terminado. Portanto, a subárvore esquerda de determinada árvore binária é percorrida.
    Travessia de ordem postal
  • Agora, vá em direção à subárvore direita de 40 que é 50, e ela também percorrerá a ordem posterior. 45 é a subárvore esquerda de 50 e não tem filhos. Então, imprimir 45 e vá em direção à subárvore direita de 50.
    Travessia de ordem postal
  • 60 é a subárvore direita de 50, que também será percorrida na pós-ordem. 55 é a subárvore esquerda de 60 que não tem filhos. Então, imprimir 55 .
    Travessia de ordem postal
  • Agora, imprimir 70, que é a subárvore direita de 60.
    Travessia de ordem postal
  • Agora, imprimir 60, e o percurso de pós-ordem para 60 é concluído.
    Travessia de ordem postal
  • Agora, imprimir 50, e o percurso de pós-ordem para 50 é concluído.
    Travessia de ordem postal
  • Afinal, imprimir 40, que é o nó raiz da árvore binária fornecida, e a travessia de pós-ordem para o nó 40 é concluída.
    Travessia de ordem postal

A saída final que obteremos após a travessia pós-ordem é -

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

Complexidade da passagem de pedidos por correio

A complexidade de tempo da travessia pós-ordem é Sobre) , onde 'n' é o tamanho da árvore binária.

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

Implementação de travessia de pedidos por correio

Agora, vamos ver a implementação do percurso pós-ordem em diferentes linguagens de programação.

Programa: Escreva um programa para implementar travessia pós-ordem em linguagem C.

 #include #include struct node { s 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 postorder*/ void traversePostorder(struct node* root) { if (root == NULL) return; traversePostorder(root->left); traversePostorder(root->right); printf(' %d ', root->element); } 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 Postorder traversal of given binary tree is -
'); traversePostorder(root); return 0; } 

Saída

truncar e excluir diferença
Travessia de ordem postal

Programa: Escreva um programa para implementar travessia pós-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 postorder*/ void traversePostorder(struct node* root) { if (root == NULL) return; traversePostorder(root-&gt;left); traversePostorder(root-&gt;right); cout&lt;<' '<element<left="createNode(28);" root->right = createNode(48); root-&gt;left-&gt;left = createNode(23); root-&gt;left-&gt;right = createNode(33); root-&gt;left-&gt;left-&gt;left = createNode(13); root-&gt;left-&gt;left-&gt;right = createNode(26); root-&gt;right-&gt;left = createNode(43); root-&gt;right-&gt;right = createNode(58); root-&gt;right-&gt;right-&gt;left = createNode(53); root-&gt;right-&gt;right-&gt;right = createNode(68); cout&lt;<'
 the postorder traversal of given binary tree is -
'; traversepostorder(root); return 0; } < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/ds-tutorial/85/postorder-traversal-14.webp" alt="Postorder Traversal"> <p> <strong>Program:</strong> Write a program to implement postorder 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 traversePostorder(Node node) { if (node == null) return; traversePostorder(node.left); traversePostorder(node.right); Console.Write(node.value + &apos; &apos;); } void traversePostorder() { traversePostorder(root); } static void Main() { BinaryTree bt = new BinaryTree(); bt.root = new Node(37); bt.root.left = new Node(27); bt.root.right = new Node(47); bt.root.left.left = new Node(22); bt.root.left.right = new Node(32); bt.root.left.left.left = new Node(12); bt.root.left.left.right = new Node(25); bt.root.right.left = new Node(42); bt.root.right.right = new Node(57); bt.root.right.right.left = new Node(52); bt.root.right.right.right = new Node(67); Console.WriteLine(&apos;The Postorder traversal of given binary tree is - &apos;); bt.traversePostorder(); } } </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/85/postorder-traversal-15.webp" alt="Postorder Traversal"> <p> <strong>Program:</strong> Write a program to implement postorder traversal in Java.</p> <pre> class Node { public int value; public Node left, right; public Node(int element) { value = element; left = right = null; } } class PostorderTraversal { Node root; PostorderTraversal() { root = null; } void traversePostorder(Node node) { if (node == null) return; traversePostorder(node.left); traversePostorder(node.right); System.out.print(node.value + &apos; &apos;); } void traversePostorder() { traversePostorder(root); } public static void main(String args[]) { PostorderTraversal pt = new PostorderTraversal(); pt.root = new Node(36); pt.root.left = new Node(26); pt.root.right = new Node(46); pt.root.left.left = new Node(21); pt.root.left.right = new Node(31); pt.root.left.left.left = new Node(11); pt.root.left.left.right = new Node(24); pt.root.right.left = new Node(41); pt.root.right.right = new Node(56); pt.root.right.right.left = new Node(51); pt.root.right.right.right = new Node(66); System.out.println(); System.out.println(&apos;The Postorder traversal of given binary tree is - &apos;); pt.traversePostorder(); 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/85/postorder-traversal-16.webp" alt="Postorder 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á -

Travessia de ordem postal

Programa: Escreva um programa para implementar travessia pós-ordem em Java.

 class Node { public int value; public Node left, right; public Node(int element) { value = element; left = right = null; } } class PostorderTraversal { Node root; PostorderTraversal() { root = null; } void traversePostorder(Node node) { if (node == null) return; traversePostorder(node.left); traversePostorder(node.right); System.out.print(node.value + &apos; &apos;); } void traversePostorder() { traversePostorder(root); } public static void main(String args[]) { PostorderTraversal pt = new PostorderTraversal(); pt.root = new Node(36); pt.root.left = new Node(26); pt.root.right = new Node(46); pt.root.left.left = new Node(21); pt.root.left.right = new Node(31); pt.root.left.left.left = new Node(11); pt.root.left.left.right = new Node(24); pt.root.right.left = new Node(41); pt.root.right.right = new Node(56); pt.root.right.right.left = new Node(51); pt.root.right.right.right = new Node(66); System.out.println(); System.out.println(&apos;The Postorder traversal of given binary tree is - &apos;); pt.traversePostorder(); System.out.println(); } } 

Saída

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

Travessia de ordem postal

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