logo

Prevoz poštnega naročila

V tem članku bomo razpravljali o prehodu po naročilu v strukturi podatkov.

Linearne podatkovne strukture, kot so sklad, niz, čakalna vrsta itd., imajo samo en način za prečkanje podatkov. Toda v hierarhični strukturi podatkov, kot je npr drevo , obstaja več načinov za pregledovanje podatkov. Torej, tukaj bomo razpravljali o drugem načinu prečkanja strukture drevesnih podatkov, tj. naročanje po pošti . Prehod po naročilu je ena od tehnik prečkanja, ki se uporablja za obisk vozlišča v drevesu. Sledi načelu LRN (levo-desno-vozlišče) . Prehod po vrstnem redu se uporablja za pridobitev postfiksnega izraza drevesa.

Za izvedbo prehoda po naročilu se uporabljajo naslednji koraki:

  • Prečkajte levo poddrevo z rekurzivnim klicem funkcije postorder.
  • Prečkajte desno poddrevo z rekurzivnim klicem funkcije postorder.
  • Dostop do podatkovnega dela trenutnega vozlišča.

Tehnika prehoda po naročilu sledi Levi desni koren politika. Levi desni koren tukaj pomeni, da se najprej prečka levo poddrevo korenskega vozlišča, nato desno poddrevo in na koncu se prečka korensko vozlišče. Tukaj samo ime Postorder nakazuje, da bo korensko vozlišče drevesa končno prečkano.

Algoritem

Zdaj pa si oglejmo algoritem prehoda po naročilu.

 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 

Primer prečkanja naročila po pošti

Zdaj pa si oglejmo primer prehoda po naročilu. Na primeru bomo lažje razumeli proces prehoda po naročilu.

Prevoz poštnih naročil

Vozlišča z rumeno barvo še niso obiskana. Zdaj bomo prečkali vozlišča zgornjega drevesa s prehodom po naročilu.

int v niz c++
  • Tu je 40 korensko vozlišče. Najprej obiščemo levo poddrevo 40, tj. 30. Vozlišče 30 bo prav tako prečkalo po vrstnem redu. 25 je levo poddrevo od 30, zato je tudi prečkano po vrstnem redu. Potem je 15 levo poddrevo od 25. Toda 15 nima poddrevesa, torej natisni 15 in se premaknite proti desnemu poddrevesu 25.
    Prevoz poštnih naročil
  • 28 je desno poddrevo 25 in nima otrok. Torej, natisni 28 .
    Prevoz poštnih naročil
  • zdaj, natisni 25 in prehod po naročilu za 25 je končano.
    Prevoz poštnih naročil
  • Nato se pomaknite proti desnemu poddrevesu 30. 35 je desno poddrevo 30 in nima otrok. Torej, natisni 35 .
    Prevoz poštnih naročil
  • Potem, natisni 30 in prehod po naročilu za 30 je končano. Torej se prečka levo poddrevo danega binarnega drevesa.
    Prevoz poštnih naročil
  • Zdaj se premaknite proti desnemu poddrevesu 40, to je 50, in bo tudi prečkalo po vrstnem redu. 45 je levo poddrevo 50 in nima otrok. Torej, natisni 45 in se premaknite proti desnemu poddrevesu 50.
    Prevoz poštnih naročil
  • 60 je desno poddrevo 50, ki bo prav tako prečkano po vrstnem redu. 55 je levo poddrevo 60, ki nima otrok. Torej, natisni 55 .
    Prevoz poštnih naročil
  • zdaj, natisni 70, ki je desno poddrevo 60.
    Prevoz poštnega naročila
  • zdaj, natisni 60, in prečkanje poštnega naročila za 60 je zaključeno.
    Prevoz poštnega naročila
  • zdaj, natisni 50, in prečkanje poštnega naročila za 50 je končano.
    Prevoz poštnega naročila
  • Končno, natisni 40, ki je korensko vozlišče danega binarnega drevesa, in prehod po naročilu za vozlišče 40 je končan.
    Prevoz poštnih naročil

Končni rezultat, ki ga bomo dobili po prehodu po naročilu, je -

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

Zapletenost naročanja po pošti

Časovna zapletenost prehoda po naročilu je O(n) , kjer je 'n' velikost binarnega drevesa.

Medtem ko je prostorska kompleksnost prečkanja po naročilu O(1) , če ne upoštevamo velikosti sklada za klice funkcij. V nasprotnem primeru je prostorska zapletenost prehoda po naročilu O(h) , kjer je 'h' višina drevesa.

Implementacija prečkanja naročil po pošti

Zdaj pa si oglejmo izvedbo prehoda po naročilu v različnih programskih jezikih.

Program: Napišite program za izvajanje prehoda po naročilu v jeziku 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; } 

Izhod

Prevoz poštnih naročil

Program: Napišite program za izvajanje prehoda po naročilu v 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></'
></'>

Izhod

Po izvedbi zgornje kode bo rezultat -

Prevoz poštnega naročila

Program: Napišite program za izvajanje prehoda po naročilu v Javi.

 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(); } } 

Izhod

kako izvesti skript

Po izvedbi zgornje kode bo rezultat -

Prevoz poštnih naročil

Torej, to je vse o članku. Upam, da vam bo članek koristen in informativen.