Travessa postal es defineix com un tipus de travessa d'arbres que segueix la política Left-Right-Root de manera que per a cada node:
- Primer es recorre el subarbre esquerre
- Aleshores es recorre el subarbre dret
- Finalment, es recorre el node arrel del subarbre

Travessa postal
Algorisme per a la travessa de l'ordre posterior de l'arbre binari:
L'algorisme per a la travessa posterior a la comanda es mostra de la següent manera:
755 chmod
Mandat postal (arrel):
- Seguiu els passos 2 a 4 fins que root != NULL
- Postordre (arrel -> esquerra)
- Postordre (arrel -> dreta)
- Escriu arrel -> dades
- Bucle final
Com funciona la travessa postordre de l'arbre binari?
Considereu l'arbre següent:

Exemple d'arbre binari
Si realitzem un recorregut posterior a l'ordre en aquest arbre binari, el recorregut serà el següent:
Pas 1: La travessa anirà de l'1 al seu subarbre esquerre, és a dir, 2, després de 2 a la seva arrel del subarbre esquerre, és a dir, 4. Ara 4 no té subarbre, així que serà visitat.
Es visita el node 4
Pas 2: Com que el subarbre esquerre de 2 es visita completament, ara travessarà el subarbre dret de 2, és a dir, es mourà a 5. Com que no hi ha subarbre de 5, es visitarà.
Es visita el node 5
Pas 3: Ara es visiten els subarbres esquerre i dret del node 2. Així que ara visiteu el mateix node 2.
Es visita el node 2
Pas 4: A mesura que es travessa el subarbre esquerre del node 1, ara es mourà a l'arrel del subarbre dret, és a dir, 3. El node 3 no té cap subarbre esquerre, de manera que travessarà el subarbre dret, és a dir, 6. El node 6 no té cap subarbre i doncs es visita.
Es visita el node 6
Pas 5: Es recorren tots els subarbres del node 3. Així que ara es visita el node 3.
Es visita el node 3
Pas 6: Com que es recorren tots els subarbres del node 1, ara és el moment de visitar el node 1 i la travessa s'acaba després d'això mentre es recorre tot l'arbre.
Es visita l'arbre complet
Per tant, l'ordre de recorregut dels nodes és 4 -> 5 -> 2 -> 6 -> 3 -> 1 .
Programa per implementar Postorder Traversal of Binary Tree
A continuació es mostra la implementació de codi de la travessa postordre:
C++
// C++ program for postorder traversals> #include> using> namespace> std;> // Structure of a Binary Tree Node> struct> Node {> >int> data;> >struct> Node *left, *right;> >Node(>int> v)> >{> >data = v;> >left = right = NULL;> >}> };> // Function to print postorder traversal> void> printPostorder(>struct> Node* node)> {> >if> (node == NULL)> >return>;> >// First recur on left subtree> >printPostorder(node->esquerra);> >// Then recur on right subtree> >printPostorder(node->dreta);> >// Now deal with the node> >cout ' '; } // Driver code int main() { struct Node* root = new Node(1); root->esquerra = nou Node (2); arrel->dreta = nou Node (3); arrel->esquerra->esquerra = nou Node (4); arrel->esquerra->dreta = nou Node (5); arrel->dreta->dreta = nou Node (6); // Crida de funció cout<< 'Postorder traversal of binary tree is:
'; printPostorder(root); return 0; }> |
>
java llegir csv
>
Java
// Java program for postorder traversals> import> java.util.*;> // Structure of a Binary Tree Node> class> Node {> >int> data;> >Node left, right;> >Node(>int> v)> >{> >data = v;> >left = right =>null>;> >}> }> class> GFG {> > >// Function to print postorder traversal> >static> void> printPostorder(Node node)> >{> >if> (node ==>null>)> >return>;> >// First recur on left subtree> >printPostorder(node.left);> >// Then recur on right subtree> >printPostorder(node.right);> >// Now deal with the node> >System.out.print(node.data +>' '>);> >}> >// Driver code> >public> static> void> main(String[] args)> >{> >Node root =>new> Node(>1>);> >root.left =>new> Node(>2>);> >root.right =>new> Node(>3>);> >root.left.left =>new> Node(>4>);> >root.left.right =>new> Node(>5>);> >root.right.right =>new> Node(>6>);> >// Function call> >System.out.println(>'Postorder traversal of binary tree is: '>);> >printPostorder(root);> >}> }> // This code is contributed by prasad264> |
>
>
Python 3
# Python program for postorder traversals> # Structure of a Binary Tree Node> class> Node:> >def> __init__(>self>, v):> >self>.data>=> v> >self>.left>=> None> >self>.right>=> None> # Function to print postorder traversal> def> printPostorder(node):> >if> node>=>=> None>:> >return> ># First recur on left subtree> >printPostorder(node.left)> ># Then recur on right subtree> >printPostorder(node.right)> ># Now deal with the node> >print>(node.data, end>=>' '>)> # Driver code> if> __name__>=>=> '__main__'>:> >root>=> Node(>1>)> >root.left>=> Node(>2>)> >root.right>=> Node(>3>)> >root.left.left>=> Node(>4>)> >root.left.right>=> Node(>5>)> >root.right.right>=> Node(>6>)> ># Function call> >print>(>'Postorder traversal of binary tree is:'>)> >printPostorder(root)> |
>
>
C#
// C# program for postorder traversals> using> System;> // Structure of a Binary Tree Node> public> class> Node {> >public> int> data;> >public> Node left, right;> >public> Node(>int> v)> >{> >data = v;> >left = right =>null>;> >}> }> public> class> GFG {> >// Function to print postorder traversal> >static> void> printPostorder(Node node)> >{> >if> (node ==>null>)> >return>;> >// First recur on left subtree> >printPostorder(node.left);> >// Then recur on right subtree> >printPostorder(node.right);> >// Now deal with the node> >Console.Write(node.data +>' '>);> >}> >static> public> void> Main()> >{> >// Code> >Node root =>new> Node(1);> >root.left =>new> Node(2);> >root.right =>new> Node(3);> >root.left.left =>new> Node(4);> >root.left.right =>new> Node(5);> >root.right.right =>new> Node(6);> >// Function call> >Console.WriteLine(> >'Postorder traversal of binary tree is: '>);> >printPostorder(root);> >}> }> // This code is contributed by karthik.> |
>
>
Javascript
// Structure of a Binary Tree Node> class Node {> >constructor(v) {> >this>.data = v;> >this>.left =>null>;> >this>.right =>null>;> >}> }> // Function to print postorder traversal> function> printPostorder(node) {> >if> (node ==>null>) {> >return>;> >}> >// First recur on left subtree> >printPostorder(node.left);> >// Then recur on right subtree> >printPostorder(node.right);> >// Now deal with the node> >console.log(node.data +>' '>);> }> // Driver code> function> main() {> >let root =>new> Node(1);> >root.left =>new> Node(2);> >root.right =>new> Node(3);> >root.left.left =>new> Node(4);> >root.left.right =>new> Node(5);> >root.right.right =>new> Node(6);> >// Function call> >console.log(>'Postorder traversal of binary tree is:
'>);> >printPostorder(root);> }> main();> |
>
llista de matrius java ordenada
>Sortida
Postorder traversal of binary tree is: 4 5 2 6 3 1>
Explicació:

Com funciona el recorregut de comandes per correu
Anàlisi de complexitat:
Complexitat temporal: O(N) on N és el nombre total de nodes. Perquè travessa tots els nodes almenys una vegada.
Espai auxiliar: O(1) si no es considera cap espai de pila de recursivitat. En cas contrari, O(h) on h és l'alçada de l'arbre
- En el pitjor dels casos, h pot ser el mateix que N (quan l'arbre és un arbre esbiaixat)
- En el millor dels casos, h pot ser el mateix que calma (quan l'arbre és un arbre complet)
Casos d'ús de Postorder Traversal:
Alguns casos d'ús de la travessa posterior a la comanda són:
- S'utilitza per a la supressió d'arbres.
- També és útil obtenir l'expressió postfix d'un arbre d'expressions.
Articles relacionats:
- Tipus de travessa d'arbres
- Recorregut iteratiu de la comanda posterior (utilitzant dues piles)
- Recorregut iteratiu de la comanda posterior (utilitzant una pila)
- Postordre de l'arbre binari sense recursivitat i sense pila
- Trobeu el recorregut posterior a la comanda de BST des del recorregut de la comanda prèvia
- Travessia de Morris per a la comanda per correu
- Imprimeix el recorregut posterior a la comanda des de la prevenda i el recorregut sense ordre




