Förbeställ genomgång definieras som en typ av trädpassering som följer Root-Vänster-Höger-policyn där:
urval sortera i java
- Rotnoden för underträdet besöks först.
- Sedan korsas det vänstra underträdet.
- Äntligen korsas det högra underträdet.

Förbeställ genomgång
Algoritm för förbeställningsövergång av binärt träd
Algoritmen för genomgång av förbeställning visas enligt följande:
Förbeställning (root):
- Följ steg 2 till 4 tills root != NULL
- Skriv root -> data
- Förbeställning (root -> vänster)
- Förbeställ (root -> höger)
- Slutslinga
Hur fungerar Preorder Traversal of Binary Tree?
Tänk på följande träd:

Exempel på binärt träd
Om vi utför en förbeställningsgenomgång i det här binära trädet, så kommer övergången att vara som följer:
Steg 1: Först kommer roten att besökas, dvs nod 1.
Nod 1 besöks
Steg 2: Efter detta, gå i det vänstra underträdet. Nu är roten av det vänstra underträdet besökt, dvs nod 2 besöks.
Nod 2 besöks
alfabet till siffrorSteg 3: Återigen korsas det vänstra underträdet av nod 2 och roten till det underträdet, dvs. nod 4 besöks.
Nod 4 besöks
Steg 4: Det finns inget underträd av 4 och det vänstra underträdet av nod 2 besöks. Så nu kommer det högra underträdet av nod 2 att korsas och roten till det underträdet, dvs nod 5 kommer att besökas.
Nod 5 besöks
Steg 5: Det vänstra underträdet av nod 1 besöks. Så nu kommer det högra underträdet av nod 1 att korsas och rotnoden, dvs nod 3 besöks.
sträng till int konvertering i javaNod 3 besöks
Steg 6: Nod 3 har inget vänster underträd. Så det högra underträdet kommer att korsas och roten till underträdet, dvs nod 6 kommer att besökas. Efter det finns det ingen nod som ännu inte har passerats. Så övergången slutar.
Hela trädet besöks
Så ordningen för korsning av noder är 1 -> 2 -> 4 -> 5 -> 3 -> 6 .
java om annat
Program för att implementera förbeställningsövergång av binärt träd
Nedan är kodimplementeringen av förbeställningsgenomgången:
C++ // C++ program for preorder traversals #include using namespace std; // Structure of a Binary Tree Node struct Node { int data; struct Node *left, *right; Node(int v) { data = v; left = right = NULL; } }; // Function to print preorder traversal void printPreorder(struct Node* node) { if (node == NULL) return; // Deal with the node cout << node->data<< ' '; // Recur on left subtree printPreorder(node->vänster); // Återkommande på höger underträd printPreorder(nod->höger); } // Drivrutinskod int main() { struct Node* root = new Node(1); root->left = new Node(2); root->right = new Node(3); root->left->left = new Node(4); root->vänster->höger = ny Node(5); root->right->right = new Node(6); // Funktionsanrop cout<< 'Preorder traversal of binary tree is:
'; printPreorder(root); return 0; }> Java // Java program for preorder traversals class Node { int data; Node left, right; public Node(int item) { data = item; left = right = null; } } class BinaryTree { Node root; BinaryTree() { root = null; } // Function to print preorder traversal void printPreorder(Node node) { if (node == null) return; // Deal with the node System.out.print(node.data + ' '); // Recur on left subtree printPreorder(node.left); // Recur on right subtree printPreorder(node.right); } // Driver code public static void main(String[] args) { BinaryTree tree = new BinaryTree(); // Constructing the binary tree tree.root = new Node(1); tree.root.left = new Node(2); tree.root.right = new Node(3); tree.root.left.left = new Node(4); tree.root.left.right = new Node(5); tree.root.right.right = new Node(6); // Function call System.out.println('Preorder traversal of binary tree is: '); tree.printPreorder(tree.root); } }> Python3 # Python program for preorder traversals # Structure of a Binary Tree Node class Node: def __init__(self, v): self.data = v self.left = None self.right = None # Function to print preorder traversal def printPreorder(node): if node is None: return # Deal with the node print(node.data, end=' ') # Recur on left subtree printPreorder(node.left) # Recur on right subtree printPreorder(node.right) # Driver code if __name__ == '__main__': root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) root.right.right = Node(6) # Function call print('Preorder traversal of binary tree is:') printPreorder(root)> C# // C# program for preorder traversals using System; // Structure of a Binary Tree Node public class Node { public int data; public Node left, right; public Node(int v) { data = v; left = right = null; } } // Class to print preorder traversal public class BinaryTree { // Function to print preorder traversal public static void printPreorder(Node node) { if (node == null) return; // Deal with the node Console.Write(node.data + ' '); // Recur on left subtree printPreorder(node.left); // Recur on right subtree printPreorder(node.right); } // Driver code public static void Main() { Node root = new Node(1); root.left = new Node(2); root.right = new Node(3); root.left.left = new Node(4); root.left.right = new Node(5); root.right.right = new Node(6); // Function call Console.WriteLine( 'Preorder traversal of binary tree is: '); printPreorder(root); } } // This code is contributed by Susobhan Akhuli> Javascript // Structure of a Binary Tree Node class Node { constructor(v) { this.data = v; this.left = null; this.right = null; } } // Function to print preorder traversal function printPreorder(node) { if (node === null) { return; } // Deal with the node console.log(node.data); // Recur on left subtree printPreorder(node.left); // Recur on right subtree printPreorder(node.right); } // Driver code function main() { const root = new Node(1); root.left = new Node(2); root.right = new Node(3); root.left.left = new Node(4); root.left.right = new Node(5); root.right.right = new Node(6); // Function call console.log('Preorder traversal of binary tree is:'); printPreorder(root); } main();> Produktion
Preorder traversal of binary tree is: 1 2 4 5 3 6>
Förklaring:

Hur förbeställningsövergång fungerar
Komplexitetsanalys:
Tidskomplexitet: O(N) där N är det totala antalet noder. Eftersom den korsar alla noder minst en gång.
Hjälputrymme:
- O(1) om inget rekursionsstackutrymme beaktas.
- Annat, Åh) där h är höjden på trädet
- I värsta fall, h kan vara samma som N (när trädet är ett skevt träd)
- I bästa fall, h kan vara samma som lugna (när trädet är ett komplett träd)
Användningsfall av förbeställningstrafik:
Några användningsfall av förbeställningsövergång är:
- Detta används ofta för att skapa en kopia av ett träd.
- Det är också användbart att hämta prefixuttrycket från ett uttrycksträd.
Relaterade artiklar:
- Typer av trädpassering
- Iterativ genomgång av förbeställning
- Kontrollera om given array kan representera förbeställningsgenomgång av BST
- Preorder from inorder and postorder traversals
- Hitta den n:te noden i förbeställningsgenomgång av ett binärt träd
- Förbeställ korsning av ett N-ärt träd




