logo

Přechod poštovní poukázkou

V tomto článku se budeme zabývat přechodem postorderu v datové struktuře.

Lineární datové struktury, jako je zásobník, pole, fronta atd., mají pouze jeden způsob, jak data procházet. Ale v hierarchické datové struktuře jako je např strom , existuje několik způsobů, jak data procházet. Zde tedy probereme další způsob, jak procházet stromovou datovou strukturou, tj. zásilkový obchod . Postorder traversal je jednou z technik procházení používaných k návštěvě uzlu ve stromu. Dodržuje princip LRN (levý-pravý-uzel) . Postorder traversal se používá k získání postfixového výrazu stromu.

K provedení postorderu se používají následující kroky:

  • Projděte levý podstrom voláním funkce postorder rekurzivně.
  • Projděte pravý podstrom voláním funkce postorder rekurzivně.
  • Přístup k datové části aktuálního uzlu.

Technika post order traversal následuje Levý pravý kořen politika. Zde Left Right Root znamená, že se nejprve projde levý podstrom kořenového uzlu, potom pravý podstrom a nakonec se projde kořenový uzel. Zde už samotný název Postorder napovídá, že kořenový uzel stromu bude konečně překročen.

bash rozdělit řetězec oddělovačem

Algoritmus

Nyní se podívejme na algoritmus procházení postorderem.

 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 

Příklad doručení zásilky

Nyní se podívejme na příklad procházení postorderem. Na příkladu bude snazší pochopit proces procházení postorderem.

Přechod poštovní poukázkou

Uzly se žlutou barvou zatím nejsou navštěvovány. Nyní budeme procházet uzly výše uvedeného stromu pomocí postorder traversal.

  • Zde je 40 kořenový uzel. Nejprve navštívíme levý podstrom 40, tj. 30. Uzel 30 bude také procházet v poštovním pořadí. 25 je levý podstrom 30, takže se také prochází v poštovním pořadí. Pak 15 je levý podstrom 25. Ale 15 žádný podstrom nemá, takže tisknout 15 a přejděte k pravému podstromu 25.
    Přechod poštovní poukázkou
  • 28 je správný podstrom 25 a nemá žádné potomky. Tak, tisknout 28 .
    Přechod poštovní poukázkou
  • Nyní, tisknout 25 , a postorder traversal pro 25 je dokončena.
    Přechod poštovní poukázkou
  • Dále přejděte k pravému podstromu 30. 35 je pravý podstrom 30 a nemá žádné potomky. Tak, tisknout 35 .
    Přechod poštovní poukázkou
  • Potom, tisknout 30 , a postorder traversal pro 30 je dokončena. Prochází se tedy levý podstrom daného binárního stromu.
    Přechod poštovní poukázkou
  • Nyní přejděte k pravému podstromu 40, to je 50, a bude také procházet v pořadí. 45 je levý podstrom 50 a nemá žádné potomky. Tak, tisk 45 a přejděte k pravému podstromu 50.
    Přechod poštovní poukázkou
  • 60 je pravý podstrom 50, který bude také procházet v poštovním pořadí. 55 je levý podstrom 60, který nemá žádné potomky. Tak, tisk 55 .
    Přechod poštovní poukázkou
  • Nyní, tisk 70, což je pravý podstrom 60.
    Přechod poštovní poukázkou
  • Nyní, tisk 60, a přechod na objednávku za 60 je dokončen.
    Přechod poštovní poukázkou
  • Nyní, tisk 50, a přechod na objednávku za 50 je dokončen.
    Přechod poštovní poukázkou
  • Nakonec, tisk 40, což je kořenový uzel daného binárního stromu a procházení příkazu pro uzel 40 je dokončeno.
    Přechod poštovní poukázkou

Konečný výstup, který dostaneme po průchodu postorderem, je -

java jak převést řetězec na int

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

Složitost zásilkového obchodu

Časová složitost průchodu postorderem je Na) , kde 'n' je velikost binárního stromu.

Kdežto prostorová složitost procházení postorderem je O(1) , pokud neuvažujeme velikost zásobníku pro volání funkcí. Jinak prostorová složitost postorder traversal je Ach) , kde 'h' je výška stromu.

Implementace zásilkového obchodu

Nyní se podívejme na implementaci postorder traversal v různých programovacích jazycích.

Program: Napište program pro implementaci postorder traversal v jazyce C.

řetězec na int v jazyce Java
 #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; } 

Výstup

Přechod poštovní poukázkou

Program: Napište program pro implementaci postorder traversal 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></'
></'>

Výstup

včetně programování c

Po provedení výše uvedeného kódu bude výstupem -

Přechod poštovní poukázkou

Program: Napište program pro implementaci postorder traversal v Javě.

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

Výstup

Po provedení výše uvedeného kódu bude výstupem -

Přechod poštovní poukázkou

Tak to je k článku vše. Doufám, že vám článek bude užitečný a informativní.