logo

Обхід поштових переказів

У цій статті ми обговоримо постпорядковий обхід у структурі даних.

Лінійні структури даних, такі як стек, масив, черга тощо, мають лише один спосіб обходу даних. Але в ієрархічній структурі даних, наприклад дерево , існує кілька способів перегляду даних. Отже, тут ми обговоримо інший спосіб обходу структури даних дерева, тобто проходження замовлення поштою . Обхід після замовлення є одним із методів обходу, який використовується для відвідування вузла в дереві. Це слідує принципу LRN (лівий-правий вузол) . Постпорядковий обхід використовується для отримання постфіксного виразу дерева.

Для виконання обходу після замовлення використовуються наступні кроки:

рядок до символу java
  • Перейдіть до лівого піддерева, викликавши функцію postorder рекурсивно.
  • Перейдіть до правого піддерева, викликавши функцію postorder рекурсивно.
  • Доступ до частини даних поточного вузла.

Техніка обходу пост-замовлення наступна Лівий правий корінь політики. Тут «лівий правий корінь» означає, що спочатку обходиться ліве піддерево кореневого вузла, потім праве піддерево і, нарешті, обходиться кореневий вузол. Тут сама назва Postorder говорить про те, що кореневий вузол дерева нарешті буде переміщено.

Алгоритм

Тепер давайте подивимося на алгоритм обходу postorder.

 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 

Приклад обходу замовлення поштою

Тепер розглянемо приклад обходу після замовлення. На прикладі буде простіше зрозуміти процес обходу постордера.

Обхід поштових переказів

Вузли з жовтим кольором ще не відвідуються. Тепер ми обійдемо вузли вищезазначеного дерева за допомогою обходу після порядку.

  • Тут 40 є кореневим вузлом. Спершу ми відвідаємо ліве піддерево 40, тобто 30. Вузол 30 також буде проходити в постпорядку. 25 є лівим піддеревом 30, тому воно також обходиться в порядку посту. Тоді 15 є лівим піддеревом 25. Але 15 не має піддерева, отже друк 15 і рухайтеся до правого піддерева 25.
    Обхід поштових переказів
  • 28 є правим піддеревом 25, і воно не має дітей. Так, друк 28 .
    Обхід поштових переказів
  • тепер, надрукувати 25 , і обхід після замовлення для 25 закінчено.
    Обхід поштових переказів
  • Далі перейдіть до правого піддерева 30. 35 є правим піддеревом 30, і воно не має дітей. Так, надрукувати 35 .
    Обхід поштових переказів
  • Після того, надрукувати 30 , і обхід після замовлення для 30 закінчено. Отже, ліве піддерево заданого бінарного дерева обходиться.
    Обхід поштових переказів
  • Тепер перейдіть до правого піддерева 40, тобто 50, і воно також пройде в порядку пост. 45 є лівим піддеревом 50, і воно не має дітей. Так, надрукувати 45 і рухайтеся до правого піддерева 50.
    Обхід поштових переказів
  • 60 є правим піддеревом 50, яке також буде проходитися в порядку пост. 55 — ліве піддерево 60, яке не має дітей. Так, надрукувати 55 .
    Обхід поштових переказів
  • тепер, друк 70, що є правим піддеревом 60.
    Обхід поштових переказів
  • тепер, друк 60, і обхід пост-замовлення для 60 завершено.
    Обхід поштових переказів
  • тепер, друк 50, і обхід пост-замовлення для 50 завершено.
    Обхід поштових переказів
  • Нарешті, друк 40, який є кореневим вузлом даного бінарного дерева, і обхід пост-замовлення для вузла 40 завершено.
    Обхід поштових переказів

Остаточним результатом, який ми отримаємо після обходу після замовлення, є -

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

Складність обходу поштового замовлення

Часова складність обходу після замовлення становить O(n) , де 'n' — розмір бінарного дерева.

У той час як просторова складність обходу постпорядку є O(1) , якщо не враховувати розмір стека для викликів функцій. В іншому випадку складність обходу постпорядку становить простір O(h) , де «h» — висота дерева.

Реалізація обходу поштового замовлення

Тепер давайте подивимося реалізацію postorder traversal різними мовами програмування.

програма: Напишіть програму для реалізації postorder traversal мовою 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; } 

Вихід

Обхід поштових переказів

програма: Напишіть програму для реалізації postorder traversal на 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></'
></'>

Вихід

Після виконання наведеного вище коду результатом буде -

Обхід поштових переказів

програма: Напишіть програму для реалізації postorder traversal на 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(); } } 

Вихід

Після виконання наведеного вище коду результатом буде -

Обхід поштових переказів

Отже, це все про статтю. Сподіваюся, стаття буде для вас корисною та інформативною.

функції arduino