baum



  • hi, kann mir jemand vielleicht ne methode schreiben, die alle knoten in einem baum zählt...

    class CBaum
    {
    private Baum:
    CBaum *left,*right,*parent,*child
    ........
    ......
    }
    Mfg dohan



  • Probiers mal so:

    int CBaum::Count()
    {
      int iCnt = 1;
      if (left)
        return iCnt += left->Count();
      if (right)
        iCnt += right->Count();
      return iCnt;
    }
    

    Ist ungetestet, aber könnte funktionieren.

    [ Dieser Beitrag wurde am 19.06.2003 um 22:20 Uhr von musicman editiert. ]



  • nee, so geht das nicht.
    der zählt nur die linken bäume. alles was irgendwo recht ist wird nicht gezählt.

    int CBaum::Count()
    {
      int iCnt = 1;
      if (left)
        iCnt += left->Count(); // so isses besser ;)
      if (right)
        iCnt += right->Count();
      return iCnt;
    }
    


  • habe eins mit globalen zähler.. müsste man noch umdoktern

    void preorderNodes(tree *t){
        if(t != NULL){
        if(t->left!=0 || t->right!=0)
            globalcountnodes++;
        preorderNodes(t->left);
        preorderNodes(t->right);     
        }
    }
    

Anmelden zum Antworten