Drzewo binarne:

#include <iostream>
#include <stdio.h>
using namespace std;

struct Wezel {
Wezel *lewy;
Wezel *prawy;
int wartosc;
};
bool relacja(int w1,int w2)
{
	return w1<w2;
}

Wezel *utworz_lisc(int wartosc){
	Wezel *w=new Wezel;
	w->wartosc=wartosc;
	w->lewy=0;
	w->prawy=0;
}
void wypisz (int poziom, Wezel *drzewo){
	for (int i=1; i<poziom;i++){
		cout<<"   ";
	}
	cout<<drzewo->wartosc<<endl;
}
void wypisz_drzewo(int poziom, Wezel *drzewo){
	
	if (drzewo){
		
		wypisz(poziom, drzewo);
		wypisz_drzewo(poziom+1,drzewo->lewy);
		wypisz_drzewo(poziom+1,drzewo->prawy);
	}
}

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	Wezel *w1=utworz_lisc(10);
	w1->lewy=utworz_lisc(8);
	w1->prawy=utworz_lisc(9);
	w1->lewy->lewy=utworz_lisc(4);
	w1->lewy->prawy=utworz_lisc(5);
	w1->prawy->lewy=utworz_lisc(6);
	w1->prawy->prawy=utworz_lisc(7);
	wypisz_drzewo(0,w1);
	
	system("Pause");
	return 0;
}

Dopisać funkcję rekurencyjną, która dodaje liść z określoną zależnością, tj. wartość liścia musi być mniejsza od wartości
poprzednika.