logo

Ennakkotilaa Traversal

Tässä artikkelissa käsittelemme ennakkotilauksen läpikulkua tietorakenteessa. Lineaarisilla tietorakenteilla, kuten pino, taulukko, jono jne., on vain yksi tapa kulkea datan läpi. Mutta hierarkkisessa tietorakenteessa, kuten esim puu , on olemassa useita tapoja kulkea dataa läpi.

Ennakkotilauksen läpikäymisessä käydään ensin juurisolmussa, sitten vasemmassa alipuussa ja tämän jälkeen oikeanpuoleisessa alipuussa. Ennakkotilauksen läpikulkuprosessi voidaan esittää seuraavasti:

 root → left → right 

Juurisolmu kuljetetaan aina ensin ennakkotilauksen läpikäymisessä, kun taas se on jälkikäteen viimeinen kohde. Ennakkotilauksen läpikulkua käytetään puun etuliitelausekkeen saamiseksi.

Ennakkotilauksen läpikäymisen vaiheet on lueteltu seuraavasti -

äärellisen tilan kone
  • Vieraile ensin juurisolmussa.
  • Käy sitten vasemmassa alipuussa.
  • Lopuksi vieraile oikealla alipuulla.

Ennakkotilauksen läpikulkutekniikka seuraa Juuri Vasen Oikea käytäntö. Nimien ennakkotilaus itsessään viittaa siihen, että juurisolmu käydään ensin läpi.

Algoritmi

Katsotaanpa nyt ennakkotilauksen läpikäymisen algoritmia.

 Step 1: Repeat Steps 2 to 4 while TREE != NULL Step 2: Write TREE -> DATA Step 3: PREORDER(TREE -> LEFT) Step 4: PREORDER(TREE -> RIGHT) [END OF LOOP] Step 5: END 

Esimerkki ennakkotilauksesta

Katsotaanpa nyt esimerkkiä ennakkotilauksen läpikäymisestä. On helpompi ymmärtää ennakkotilauksen läpikulkuprosessi esimerkin avulla.

Ennakkotilaa Traversal

Keltaisilla solmuilla ei ole vielä käyty. Nyt kuljemme yllä olevan puun solmut käyttämällä ennakkotilauksen läpikulkua.

  • Aloita juurisolmusta 40. Ensin, tulostaa 40 ja sitten rekursiivisesti vasemman alipuun poikki.
    Ennakkotilaa Traversal
  • Siirry nyt vasempaan alipuuhun. Vasemman alipuun juurisolmu on 30. Tulosta 30 , ja siirry kohti 30:n vasenta alipuuta.
    Ennakkotilaa Traversal
  • Vasemmassa alipuussa 30 on elementti 25, joten tulostaa 25 , ja kulkea 25:n vasemman alipuun läpi.
    Ennakkotilaa Traversal
  • Vasemmassa alipuussa 25 on elementti 15 ja 15:llä ei ole alipuuta. Niin, tulostaa 15 , ja siirry 25:n oikeaan alipuuhun.
    Ennakkotilaa Traversal
  • Oikeassa alipuussa 25 on 28, ja 28:lla ei ole alipuuta. Niin, tulostaa 28 , ja siirry 30:n oikeaan alipuuhun.
    Ennakkotilaa Traversal
  • Oikeassa alipuussa 30 on 35, jolla ei ole alipuuta. Niin tulostaa 35 , ja kulkea 40:n oikean alipuun läpi.
    Ennakkotilaa Traversal
  • Oikeassa alipuussa 40 on 50. Tulosta 50 , ja kulkea 50:n vasemman alipuun läpi.
    Ennakkotilaa Traversal
  • Vasemmassa 50 alipuussa on 45, joilla ei ole lapsia. Niin, tulostaa 45 , ja kulkea 50:n oikean alipuun läpi.
    Ennakkotilaa Traversal
  • Oikeassa 50:n alipuussa on 60. Tulosta 60 ja kulkea 60:n vasemman alipuun läpi.
    Ennakkotilaa Traversal
  • Vasemmassa alipuussa 60 on 55, jolla ei ole lapsia. Niin, tulostaa 55 ja siirry 60:n oikeaan alipuuhun.
    Ennakkotilaa Traversal
  • Oikeassa alipuussa 60 on 70, joilla ei ole lapsia. Niin, tulostaa 70 ja lopeta prosessi.
    Ennakkotilaa Traversal

Kun ennakkotilauksen läpikulku on suoritettu, lopullinen tulos on -

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

java merkkijonomenetelmät

Ennakkotilauksen läpikulun monimutkaisuus

Ennakkotilauksen läpikulun aika monimutkaisuus on Päällä) , jossa 'n' on binääripuun koko.

Sitä vastoin ennakkotilauksen läpikulun monimutkaisuus on O(1) , jos emme ota huomioon funktiokutsujen pinon kokoa. Muuten ennakkotilauksen läpikulku on monimutkainen Vai niin) , jossa 'h' on puun korkeus.

Ennakkotilauksen läpikulun toteutus

Katsotaanpa nyt ennakkotilauksen läpikulkua eri ohjelmointikielillä.

Ohjelmoida: Kirjoita ohjelma toteuttamaan ennakkotilauksen läpikulku C-kielellä.

cout
 #include #include 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->element = val; Node->left = NULL; Node->right = NULL; return (Node); } /*function to traverse the nodes of binary tree in preorder*/ void traversePreorder(struct node* root) { if (root == NULL) return; printf(' %d ', root->element); traversePreorder(root->left); traversePreorder(root->right); } 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 Preorder traversal of given binary tree is -
'); traversePreorder(root); return 0; } 

Lähtö

Yllä olevan koodin suorittamisen jälkeen tulos on -

Ennakkotilaa Traversal

Ohjelmoida: Kirjoita ohjelma toteuttamaan ennakkotilauksen läpikulku C++:ssa.

 #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 preorder*/ void traversePreorder(struct node* root) { if (root == NULL) return; cout&lt;<' '<element<left); traversepreorder(root->right); } int main() { struct node* root = createNode(39); root-&gt;left = createNode(29); root-&gt;right = createNode(49); root-&gt;left-&gt;left = createNode(24); root-&gt;left-&gt;right = createNode(34); root-&gt;left-&gt;left-&gt;left = createNode(14); root-&gt;left-&gt;left-&gt;right = createNode(27); root-&gt;right-&gt;left = createNode(44); root-&gt;right-&gt;right = createNode(59); root-&gt;right-&gt;right-&gt;left = createNode(54); root-&gt;right-&gt;right-&gt;right = createNode(69); cout&lt;<'
 the preorder traversal of given binary tree is -
'; traversepreorder(root); return 0; } < 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/25/preorder-traversal-14.webp" alt="Preorder Traversal"> <p> <strong>Program:</strong> Write a program to implement preorder 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 traversePreorder(Node node) { if (node == null) return; Console.Write(node.value + &apos; &apos;); traversePreorder(node.left); traversePreorder(node.right); } void traversePreorder() { traversePreorder(root); } static void Main() { BinaryTree bt = new BinaryTree(); bt.root = new Node(38); bt.root.left = new Node(28); bt.root.right = new Node(48); bt.root.left.left = new Node(23); bt.root.left.right = new Node(33); bt.root.left.left.left = new Node(13); bt.root.left.left.right = new Node(26); bt.root.right.left = new Node(43); bt.root.right.right = new Node(58); bt.root.right.right.left = new Node(53); bt.root.right.right.right = new Node(68); Console.WriteLine(&apos;Preorder traversal of given binary tree is - &apos;); bt.traversePreorder(); } } </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/25/preorder-traversal-15.webp" alt="Preorder Traversal"> <p> <strong>Program:</strong> Write a program to implement preorder traversal in Java.</p> <pre> class Node { public int value; public Node left, right; public Node(int element) { value = element; left = right = null; } } class PreorderTraversal { Node root; PreorderTraversal() { root = null; } void traversePreorder(Node node) { if (node == null) return; System.out.print(node.value + &apos; &apos;); traversePreorder(node.left); traversePreorder(node.right); } void traversePreorder() { traversePreorder(root); } public static void main(String args[]) { PreorderTraversal pt = new PreorderTraversal(); pt.root = new Node(37); pt.root.left = new Node(27); pt.root.right = new Node(47); pt.root.left.left = new Node(22); pt.root.left.right = new Node(32); pt.root.left.left.left = new Node(12); pt.root.left.left.right = new Node(25); pt.root.right.left = new Node(42); pt.root.right.right = new Node(57); pt.root.right.right.left = new Node(52); pt.root.right.right.right = new Node(67); System.out.println(); System.out.println(&apos;Preorder traversal of given binary tree is - &apos;); pt.traversePreorder(); 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/25/preorder-traversal-16.webp" alt="Preorder Traversal"> <p>So, that&apos;s all about the article. Hope the article will be helpful and informative to you.</p> <hr></'
></'>

Lähtö

Yllä olevan koodin suorittamisen jälkeen tulos on -

Ennakkotilaa Traversal

Ohjelmoida: Kirjoita ohjelma toteuttamaan ennakkotilauksen läpikulku Javassa.

milloin q2 alkaa
 class Node { public int value; public Node left, right; public Node(int element) { value = element; left = right = null; } } class PreorderTraversal { Node root; PreorderTraversal() { root = null; } void traversePreorder(Node node) { if (node == null) return; System.out.print(node.value + &apos; &apos;); traversePreorder(node.left); traversePreorder(node.right); } void traversePreorder() { traversePreorder(root); } public static void main(String args[]) { PreorderTraversal pt = new PreorderTraversal(); pt.root = new Node(37); pt.root.left = new Node(27); pt.root.right = new Node(47); pt.root.left.left = new Node(22); pt.root.left.right = new Node(32); pt.root.left.left.left = new Node(12); pt.root.left.left.right = new Node(25); pt.root.right.left = new Node(42); pt.root.right.right = new Node(57); pt.root.right.right.left = new Node(52); pt.root.right.right.right = new Node(67); System.out.println(); System.out.println(&apos;Preorder traversal of given binary tree is - &apos;); pt.traversePreorder(); System.out.println(); } } 

Lähtö

Yllä olevan koodin suorittamisen jälkeen tulos on -

Ennakkotilaa Traversal

Eli siinä kaikki artikkelista. Toivottavasti artikkeli on hyödyllinen ja informatiivinen sinulle.