wypisywanie w konkretnym miejscu w konsoli

wypisywanie w konkretnym miejscu w konsoli
  • Rejestracja: dni
  • Ostatnio: dni
0

Chcę w konkretnym porządku (inorder, postorder, preorder) "wypisać" drzewo binarne oraz w tym również porządku głębokość każdego liścia. Chcę jednak, żeby na wejściu najpierw pojawiło się "wypisane" drzewo, a następnie głębokości liści. W jaki sposób mam to zrealizować bez trzymania tych głębokości w dodatkowej pamięci? Trzeba wypisać to "w locie", również bez drugiego przechodzenia drzewa.

Kopiuj
void preorder (drzewo, wierzcholek) {
	wypisz wierzcholek;
       
	if (wierzcholek ma lewego syna)
		preorder (drzewo, lewy syn wierzcholka);

	if (wierzcholek ma prawego syna)
		preorder (drzewo, prawy syn wierzcholka);

	if (wierzcholek nie ma synow <=> wierzcholek jest lisciem) {
               przejdz do nastepnej linijki;
               wypisz glebokosc wierzcholka;
               wroc do linijki wyzej;
        }
}
twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
1

Niech preorder() ma trzeci parametr glebokosc, który wypisujesz gdy dojdziesz do liścia. Wywołanie rekurencyjne dla syna musi oczywiście to zwiększać

Kopiuj
preorder (drzewo, lewy syn wierzcholka, glebokosc+1);
  • Rejestracja: dni
  • Ostatnio: dni
0

To wiem, nie w tym jednak leży problem. Chcę wypisać w pierwszej linijce drzewo, w drugiej w odpowiedniej kolejnosci glebokosci lisci. Zatem podczas wypisywania drzewa, kiedy dojde do liscia, to chce przeskoczyc linijke nizej i wypisac glebokosc, po czym wrocic do linijki wyżej i wypisywać dalej drzewo.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.