algorithm
Przechodzenie przez drzewo binarne
Szukaj…
Wprowadzenie
Odwiedzanie węzła drzewa binarnego w określonej kolejności nazywa się podróżowaniem.
Przechodzenie przed drzewem binarnym w przedsprzedaży, w zamówieniu i po zamówieniu
Rozważ drzewo binarne:
Przechodzenie w przedsprzedaży (root) polega na przemierzaniu węzła, a następnie lewej sub-drzewa węzła, a następnie prawej sub-drzewa węzła.
W związku z tym przejście nad powyższym drzewem w przedsprzedaży będzie następujące:
1 2 4 5 3 6 7
Przechodzenie w kolejności (root) polega na przemierzaniu lewego poddrzewa węzła, następnie węzła, a następnie prawego poddrzewa węzła.
Tak więc w kolejności przechodzenia nad powyższym drzewem będzie:
4 2 5 1 6 3 7
Przechodzenie po zamówieniu (root) przemierza lewe sub-drzewo węzła, następnie prawe sub-drzewo, a następnie węzeł.
Zatem przejście powyżej drzewa będzie następujące:
4 5 2 6 7 3 1
Przejście poziomu zamówienia - wdrożenie
Na przykład jeśli dane drzewo to:
Przejście poziomu zamówienia będzie
1 2 3 4 5 6 7
Drukowanie danych węzła poziom po poziomie.
Kod:
#include<iostream>
#include<queue>
#include<malloc.h>
using namespace std;
struct node{
int data;
node *left;
node *right;
};
void levelOrder(struct node *root){
if(root == NULL) return;
queue<node *> Q;
Q.push(root);
while(!Q.empty()){
struct node* curr = Q.front();
cout<< curr->data <<" ";
if(curr->left != NULL) Q.push(curr-> left);
if(curr->right != NULL) Q.push(curr-> right);
Q.pop();
}
}
struct node* newNode(int data)
{
struct node* node = (struct node*)
malloc(sizeof(struct node));
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);
}
int main(){
struct node *root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);
root->right->left = newNode(6);
root->right->right = newNode(7);
printf("Level Order traversal of binary tree is \n");
levelOrder(root);
return 0;
}
Struktura danych kolejki służy do osiągnięcia powyższego celu.