Двоично дърво


Бинарното дърво е основна структура от данни, където можем лесно да съхраняваме и извличаме данни. Състои се от възли, където всеки възел съдържа ляв указател, десен указател и данни.

Основният указател сочи към най-горния възел на дървото, а левият и десният указател сочат към по-малките поддървета от двете страни.

Създаване на двоично дърво

алгоритъм

1. Първо създайте нов възел
Определете възел с някои данни, препратки към неговия ляв и десен дъщерни възли.
2. Направете първата стойност, която вмъкнете като корен.
3. Ако искате да вмъкнете следващата стойност вляво от корена, вмъкнете като root-> вляво или ако искате да вмъкнете вдясно вмъкнете като root-> вдясно
4. Повторете стъпка 3, за да вмъкнете възела в дясната отрова в дървото. Например, за да вмъкнете възела вляво отляво на корена, вмъкнете като root-> left-> left.

Пример

Програма C ++

#include <stdlib.h>
#include <stdio.h>

struct node 
{
	char data;
	struct node *left;
	struct node *right;
};
struct node* newNode(char data)
{
// Allocate memory for new node 
struct node* node = (struct node*)malloc(sizeof(struct node));

// Assign data to this node
node->data = data;

// Initialize left and right children as NULL
node->left = NULL;
node->right = NULL;
return(node);
}
void prinTree(struct node* node)	//Using PreOrder Traversal for Printing a Tree 
{
	if(node == NULL)
		return;
	printf("%c\n",node->data );
	prinTree(node->left);
	prinTree(node->right);

}



int main()
{				//Creating a Tree with nodes A, B, C, D, E, F
struct node *root = newNode('A'); // Creating a root with left and right pointers Null


root->left	 = newNode('B');    // Creating a left node to A 
root->right	 = newNode('C');	// Creating a right node to A


root->left->left = newNode('D');    //Creating a left left node to A
root->left->right = newNode('E');	//Creating a left right node to A
root->right->left = newNode('F');	//Creating a right left node to A
prinTree(root);  //It will print the Tree
return 0;
}