Durchquerung von Postanweisungen ist als eine Art von definiert Baumdurchquerung Dies folgt der Left-Right-Root-Richtlinie, sodass für jeden Knoten Folgendes gilt:
- Der linke Teilbaum wird zuerst durchlaufen
- Anschließend wird der rechte Teilbaum durchlaufen
- Abschließend wird der Wurzelknoten des Teilbaums durchlaufen

Durchquerung von Postanweisungen
Algorithmus für die Postorder-Traversierung des Binärbaums:
Der Algorithmus für die Postorder-Traversierung wird wie folgt dargestellt:
Postanweisung (Wurzel):
- Befolgen Sie die Schritte 2 bis 4, bis root != NULL ist
- Postorder (root -> links)
- Postorder (root -> rechts)
- Root -> Daten schreiben
- Schleife beenden
Wie funktioniert die Postorder-Traversierung des Binärbaums?
Betrachten Sie den folgenden Baum:

Beispiel eines Binärbaums
Wenn wir in diesem Binärbaum eine Postorder-Traversierung durchführen, sieht die Traversierung wie folgt aus:
Schritt 1: Die Durchquerung erfolgt von 1 zu seinem linken Teilbaum, also 2, dann von 2 zu seiner linken Teilbaumwurzel, also 4. Jetzt hat 4 keinen Teilbaum, also wird er besucht.
Knoten 4 wird besucht
Schritt 2: Da der linke Teilbaum von 2 vollständig besucht ist, durchläuft er nun den rechten Teilbaum von 2, d. h. er bewegt sich zu 5. Da es keinen Teilbaum von 5 gibt, wird er besucht.
Knoten 5 wird besucht
Schritt 3: Nun werden sowohl der linke als auch der rechte Teilbaum von Knoten 2 besucht. Besuchen Sie nun Knoten 2 selbst.
Knoten 2 wird besucht
Schritt 4: Wenn der linke Teilbaum von Knoten 1 durchquert wird, bewegt er sich nun zur rechten Teilbaumwurzel, d. h. 3. Knoten 3 hat keinen linken Teilbaum, also wird er den rechten Teilbaum durchqueren, d. h. 6. Knoten 6 hat keinen Teilbaum und also wird es besucht.
Knoten 6 wird besucht
Schritt 5: Alle Teilbäume von Knoten 3 werden durchlaufen. Jetzt wird Knoten 3 besucht.
Knoten 3 wird besucht
Schritt 6: Da alle Teilbäume von Knoten 1 durchquert werden, ist es nun an der Zeit, Knoten 1 zu besuchen, und die Durchquerung endet danach, wenn der gesamte Baum durchquert wird.
Der komplette Baum wird besichtigt
Die Reihenfolge der Knotendurchquerung ist also 4 -> 5 -> 2 -> 6 -> 3 -> 1 .
Programm zur Implementierung von Postorder Traversal of Binary Tree
Nachfolgend finden Sie die Code-Implementierung des Postorder-Traversals:
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->links);> >// Then recur on right subtree> >printPostorder(node->rechts);> >// Now deal with the node> >cout ' '; } // Driver code int main() { struct Node* root = new Node(1); root->links = neuer Knoten(2); root->right = new Node(3); root->left->left = new Node(4); root->left->right = new Node(5); root->right->right = new Node(6); // Funktionsaufruf cout<< 'Postorder traversal of binary tree is:
'; printPostorder(root); return 0; }> |
>
>
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> |
>
>
Python3
# 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#
str.substring in Java
// 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();> |
>
>Ausgabe
Postorder traversal of binary tree is: 4 5 2 6 3 1>
Erläuterung:

So funktioniert die Durchquerung des Versandhandels
Komplexitätsanalyse:
Zeitkomplexität: O(N) wobei N die Gesamtzahl der Knoten ist. Weil es alle Knoten mindestens einmal durchläuft.
Hilfsraum: O(1), wenn kein Rekursionsstapelplatz berücksichtigt wird. Ansonsten O(h), wobei h die Höhe des Baums ist
- Im schlimmsten Fall, H kann dasselbe sein wie N (wenn der Baum ein schiefer Baum ist)
- Im besten Fall, H kann dasselbe sein wie ruhig (wenn der Baum ein vollständiger Baum ist)
Anwendungsfälle von Postorder Traversal:
Einige Anwendungsfälle der Postorder-Traversierung sind:
- Dies wird zum Löschen des Baums verwendet.
- Es ist auch nützlich, den Postfix-Ausdruck aus einem Ausdrucksbaum abzurufen.
In Verbindung stehende Artikel:
- Arten von Baumdurchquerungen
- Iterative Postorder-Traversierung (mit zwei Stapeln)
- Iterative Postorder-Durchquerung (mit einem Stapel)
- Nachbestellung des Binärbaums ohne Rekursion und ohne Stapel
- Finden Sie Postorder-Traversal von BST aus Preorder-Traversal
- Morris-Durchquerung für den Versandhandel
- Postorder-Traversal aus Preorder und Inorder-Traversal drucken




