Strom ze vstupu – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Strom ze vstupu – Java – Fórum – Programujte.comStrom ze vstupu – Java – Fórum – Programujte.com

 

Dave265
~ Anonymní uživatel
1 příspěvek
26. 12. 2011   #1
-
0
-

Ahoj,

potřeboval bych poradit. Mám vytvořit strom, kde rodič má max. 2 potomky a číslo rodiče je vždy nižší než číslo potomka. Na vstup mi přichází vždy dvojice čísel např:

4 2

2 5

2 1

1 3

3 6

Pokud mám např. čísla 3 1 znamená to, že 1 je rodič (nižší číslo) a 3 je potomek do leva.

Pokud mám např čísla 1 3 znamená to, že 1 rodič a tři je potomek do prava.

Vymyslel jsem následující kód, ale nevím jak to napsat tak, aby se mi vytvořil pomocí alogitmu komplet celý kód:

class Node {

    int key;
    Node parent; // Někdy není potřeba.
    Node left, right;

    Node(){}
   
    Node(int k) {
        key = k;
    } // Konstruktor.

    public void preorder(Node u) {
        if (u == null) {
            return;
        } else {
            System.out.println(u.key); //1. koren
            preorder(u.left); //2. L podstrom
            preorder(u.right); //3. P podstrom
        }
    }


}

public static void main(String[] args) {
        Node root1 = new Node(2);
        root1.left = new Node(4);
        root1.right = new Node(5);
        root1.parent =new Node(1);
       
        Node root2 = new Node(1);
        root2.left = root1;
        root2.right = new Node(3);
        root2.right.right = new Node(6);


        root1.preorder(root1);

}

Nahlásit jako SPAM
IP: 85.71.215.–
zlz
~ Anonymní uživatel
634 příspěvků
27. 12. 2011   #2
-
0
-

Nejjednodušší bude držet si ty nody v nějakém poli a postupně je propojovat.

Nahlásit jako SPAM
IP: 213.211.51.–
zlz
~ Anonymní uživatel
634 příspěvků
27. 12. 2011   #3
-
0
-

   

HashMap<Integer,Node> hm = new HashMap<Integer,Node>();
		
while (nebylonactenovsechno) {
	int a = prvniklic(), b = druhyklic();
			
	if (!hm.containsKey(a)) hm.put(a, new Node(a));
	if (!hm.containsKey(b)) hm.put(b, new Node(b));
			
	Node na = hm.get(a), nb = hm.get(b);
			
	if (a < b) {
		na.right = nb;
		nb.parent = na;
	} else {
		nb.left = na;
		na.parent = nb;
	}
}
Nahlásit jako SPAM
IP: 213.211.51.–
Jana24
~ Anonymní uživatel
6 příspěvků
28. 12. 2011   #4
-
0
-

Super díky

Nahlásit jako SPAM
IP: 85.71.215.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

Strom — založil DugButabi

B-strom — založil Siggi

2-3-4 strom v C — založil SpartakusCZ

Binární strom — založil Tomáš

Binární strom — založil garamond

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý