Árbol binario simple para trabajo de prueba

Una vez estaba haciendo una asignación de trabajo después de una entrevista, algo así como una tarea de prueba, pero no en casa. Estaba Internet y busqué en Google el código C y encontré un código que contenía errores, por lo que no pude hacer la tarea para la que estaba asignada una hora. ¿Por qué sucedió? Solo diré que en términos de programación todo fue malo para mí al mínimo y tampoco tenía mi propio código para árboles y para gráficos.





Entonces, comencemos con lo básico:





́ ́ —   , (). , , .   .[1]





// #1             , 
#include <iostream>
#include <conio.h>
using namespace std;
// 
struct node
{
	int info;                           // 
	node *l, *r;                        //    
};

node *tree = NULL;                      // ,    

/*     */
void push(int a, node **t)
{
	if ((*t) == NULL)                   //   
	{
		(*t) = new node;                // 
		(*t)->info = a;                 //     a
		(*t)->l = (*t)->r = NULL;       //    
		return;                         // , 
	}
	// 
	if (a > (*t)->info) push(a, &(*t)->r); //      ,   
	else push(a, &(*t)->l);         //   
}

/*    */
void print(node *t, int u)
{
	if (t == NULL) return;                  //  ,   , 
	else //
	{
		print(t->l, ++u);                   //     
		for (int i = 0; i < u; ++i) cout << "|";
		cout << t->info << endl;            //  
		u--;
	}
	print(t->r, ++u);                       //     
}
int sum(node *node_) {
	if (node_ == 0) return 0;
	return node_->info + sum(node_->l) + sum(node_->r);
}
int main()
{
	int n = 16;                              // 
	int s;                              //,   

	for (int i = 0; i < n; ++i)
	{
		s = -5 + rand() % 10;                       //   
		push(s, &tree);                 //    
	}
	cout << " \n";
	print(tree, 0);
	cout << "\n"<<
		sum(tree) << endl;
	cin.ignore().get();
}
      
      



. .





- , .





!








All Articles