Пример алгоритма "Бинарное дерево" на С++

← разместить еще код

Расшаренный код:

#include<iostream>

using namespace std;	 

struct Node
{	
	Node(int &data )
	{ 
		this->data = data;
		this->l = NULL;
		this->r = NULL;
	}
	int data;
	Node *l;
	Node *r;
};


void add_node(int data, Node *&Tree)
{
	//--начало дерева--
	if (Tree == NULL) Tree = new Node(data);		
	
	//--левая ветвь--
	if (data < Tree->data)
	{
		if (Tree->l != NULL) add_node(data, Tree->l);
		else Tree->l = new Node(data);
	}
	
	//--правая ветвь--
	if (data >= Tree->data)
	{
		if (Tree->r != NULL) add_node(data, Tree->r);
		else Tree->r = new Node(data);;
	}
}

void PrintTree(Node *Tree) // вывод на экран
{
	if (Tree != NULL)
	{
		PrintTree(Tree->l);
		cout << Tree->data << " ";
		PrintTree(Tree->r);
	}
}



int main()
{
	setlocale(LC_ALL, "ru");
	
	Node *Tree=NULL;   // создать указатель на будущее дерево  
	
	add_node(8, Tree);  // начало дерево

	add_node(10, Tree); // первый уровень 
	add_node(3, Tree);  // первый уровень 

	add_node(1, Tree);  // второй уровень
	add_node(14, Tree); // второй уровень
	add_node(6, Tree);  // второй уровень

	add_node(13, Tree); // третий уровень
	add_node(7, Tree);  // третий уровень
	add_node(4, Tree);  // третий уровень


	PrintTree(Tree);
	cout << endl;	

	system("pause");
	return 0;
};