logo

Traslazione vaglia postale

In questo articolo discuteremo dell'attraversamento del postordine nella struttura dei dati.

Le strutture di dati lineari come stack, array, coda, ecc. hanno solo un modo per attraversare i dati. Ma in una struttura di dati gerarchica come albero , esistono diversi modi per esaminare i dati. Quindi, qui discuteremo un altro modo per attraversare la struttura dei dati ad albero, vale a dire, attraversamento delle vendite per corrispondenza . L'attraversamento postorder è una delle tecniche di attraversamento utilizzate per visitare il nodo dell'albero. Segue il principio LRN (nodo sinistro-destro) . L'attraversamento postordine viene utilizzato per ottenere l'espressione suffissa di un albero.

Per eseguire l'attraversamento postorder vengono utilizzati i seguenti passaggi:

  • Attraversa il sottoalbero sinistro chiamando ricorsivamente la funzione postorder.
  • Attraversa il sottoalbero destro chiamando ricorsivamente la funzione postorder.
  • Accedi alla parte dati del nodo corrente.

La tecnica di attraversamento dell'ordine post segue il Radice sinistra destra politica. Qui, Radice Sinistra Destra significa che viene attraversato prima il sottoalbero sinistro del nodo radice, poi il sottoalbero destro e infine il nodo radice. Qui, il nome stesso Postorder suggerisce che il nodo radice dell'albero sarà finalmente attraversato.

Algoritmo

Vediamo ora l'algoritmo di attraversamento del postorder.

assolutamente unico
 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 

Esempio di attraversamento di ordini per corrispondenza

Vediamo ora un esempio di attraversamento postorder. Sarà più semplice comprendere il processo di attraversamento del postorder utilizzando un esempio.

Traslazione vaglia postale

I nodi di colore giallo non sono ancora visitati. Ora attraverseremo i nodi dell'albero sopra usando l'attraversamento postorder.

  • Qui, 40 è il nodo radice. Visitiamo prima il sottoalbero sinistro di 40, cioè 30. Anche il nodo 30 lo attraverserà in ordine successivo. 25 è il sottoalbero sinistro di 30, quindi viene attraversato anche in ordine successivo. Allora 15 è il sottoalbero sinistro di 25. Ma 15 non ha un sottoalbero, quindi stampa 15 e spostarsi verso il sottoalbero destro di 25.
    Traslazione vaglia postale
  • 28 è il sottoalbero destro di 25 e non ha figli. COSÌ, stampa 28 .
    Traslazione vaglia postale
  • Ora, stampa 25 e l'attraversamento postorder per 25 è finito.
    Traslazione vaglia postale
  • Successivamente, spostati verso il sottoalbero destro di 30. 35 è il sottoalbero destro di 30 e non ha figli. COSÌ, stampa 35 .
    Traslazione vaglia postale
  • Dopo di che, stampa 30 e l'attraversamento postorder per 30 è finito. Quindi, viene attraversato il sottoalbero sinistro di un dato albero binario.
    Traslazione vaglia postale
  • Ora spostati verso il sottoalbero destro di 40, ovvero 50, e anch'esso attraverserà in ordine postale. 45 è il sottoalbero sinistro di 50 e non ha figli. COSÌ, stampa 45 e spostarsi verso il sottoalbero destro di 50.
    Traslazione vaglia postale
  • 60 è il sottoalbero destro di 50, che verrà anch'esso attraversato in ordine successivo. 55 è il sottoalbero sinistro di 60 che non ha figli. COSÌ, stampa 55 .
    Traslazione vaglia postale
  • Ora, stampa 70, che è il sottoalbero destro di 60.
    Traslazione vaglia postale
  • Ora, stampa 60, e l'attraversamento dell'ordine postale per 60 è stato completato.
    Traslazione vaglia postale
  • Ora, stampa 50, e l'attraversamento dell'ordine postale per 50 è stato completato.
    Traslazione vaglia postale
  • Infine, stampa 40, che è il nodo radice del dato albero binario, e l'attraversamento del post-ordine per il nodo 40 è completato.
    Traslazione vaglia postale

L'output finale che otterremo dopo l'attraversamento postorder è:

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

arp-un comando

Complessità dell'attraversamento degli ordini per corrispondenza

La complessità temporale dell'attraversamento del postordine è SU) , dove 'n' è la dimensione dell'albero binario.

Mentre la complessità spaziale dell'attraversamento postordine lo è O(1) , se non consideriamo la dimensione dello stack per le chiamate di funzione. Altrimenti, la complessità spaziale dell'attraversamento postordine lo è OH) , dove 'h' è l'altezza dell'albero.

Implementazione dell'attraversamento degli ordini per corrispondenza

Ora vediamo l'implementazione del postorder traversal in diversi linguaggi di programmazione.

Programma: Scrivere un programma per implementare l'attraversamento postorder in linguaggio 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; } 

Produzione

Traslazione vaglia postale

Programma: Scrivere un programma per implementare l'attraversamento postorder in 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></'
></'>

Produzione

Dopo l'esecuzione del codice sopra, l'output sarà:

Traslazione vaglia postale

Programma: Scrivere un programma per implementare l'attraversamento postorder in 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(); } } 

Produzione

Dopo l'esecuzione del codice sopra, l'output sarà:

matematica Java casuale
Traslazione vaglia postale

Quindi, questo è tutto sull'articolo. Spero che l'articolo ti sia utile e informativo.