logo

Travessament posterior de l'arbre binari

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

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):

  1. Seguiu els passos 2 a 4 fins que root != NULL
  2. Postordre (arrel -> esquerra)
  3. Postordre (arrel -> dreta)
  4. Escriu arrel -> dades
  5. Bucle final

Com funciona la travessa postordre de l'arbre binari?

Considereu l'arbre següent:



Exemple d'arbre binari

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

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

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

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

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

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

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

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