Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Durschnittliche Pfadlänge (Baum)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.03.2005, 18:17 Uhr
Sengi



Hallo zusammen,
trotz Nutzung der Suche brauch ich ein bissle Hilfe

Ich habe hier einen binäre Baum und soll folgendes die durchschnittliche Anzahl von Knoten eines Pfades = mittlere Pfadlänge ausgeben.

Nur so richtig fehlt mir die Idee etc...

Bisher sieht mein Programm so aus (standart binärer Baum)

C++:
#include <iostream>
using namespace std;


struct Node
{
    int data;
    Node* left;
    Node* right;
}

Node* newLeafNode ( int data )
{
    Node* new_node = new Node;
    new_node ->data = data;
    new_node->left = NULL;
    new_node->right = NULL;

    return new_node;
}

Node* insertLeafNode ( Node* treeRoot, int data )
{
    if (treeRoot == NULL)
        return newLeadNode(data);

    if ( data <= treeRoot->data )
        treeRoot->left = insertLeafNode(treeRoot->left, data);
    else
        treeRoot->right = insertLeafNode(treeRoot->right, data);
}

/** Iterative Implementation
Node* insertLeafNode( Node* treeRoot, int data )
{
    Node** nPtr = &treeRoot;
    while ( *nPtr != NULL )
    {
        Node* n = *nPtr;
        if ( data <= n->data )
            nPtr = &n->left;
        else
            nPtr = &n->right;
    }
    *nPtr = newLeafNode(data);
    return treeRoot;
}
**/



void printTree( Node* treeRoot )
{
    if ( treeRoot != NULL )
    {
        printTree(treeNode->left);
        cout << treeRoot->data << endl;
        printTree(treeNode->right);
    }
}

int main()
{
    Node* treeRoot = NULL;
    int data;
    cin >> data;

    while ( data >= 0 )
    {
        treeRoot = insertLeafNode(treeRoot,data);
        cin >> data;
    }

    cout << "Binärer Baum: " << endl << printTree(treeRoot) << endl;

    return 0;


}



Hat da vielleicht jemand eine Idee?
ach ja das Programm ist erst ein Rohkonzept ( noch nicht kompiliert etc...., sondern einfach mal runtergeschrieben, müsste aber so hinkommen).
Wäre dankbar für jede Hilfe.


Gruss Sengi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.03.2005, 09:24 Uhr
Airdamn



Ich denke Du müsstest den Baum komplett durchlaufen.
Zähle die Knoten von der Wurzel (Root) bis zu einem Blatt (Leaf). Wenn Du Anzahl alle Knoten/Anzahl Blätter teilst, solltest Du die durchschnittliche Anzahl Knoten eines Pfades bekommen, wobei die Knoten ja teilweise mehrfach gezählt werden müssten.
Ich würde wahrscheinlich eine Rekursion für das durchlaufen bevorzugen.

Dieser Post wurde am 09.03.2005 um 09:25 Uhr von Airdamn editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: