Binary Tree Problem.



  • Hi Leute ich versuche gerade eine Einfach Klasse für einen Binären Baum zu erstellen mein Problem ist das ich gerne Ein "Wurzel" benutzen möchte, jedoch nicht weiß wie ich das machen soll, außerdem wäre ich dankbar für Vorschläge um meine einfeugen funktione zu realisieren.

    // BaumKlasse.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include <stdlib.h>
    
    class BaumElement {
    public:	
    	BaumElement *rechts;							//Pointer auf das jeweils recht und linke Element	
    	BaumElement *links;
    	int index;										//Indexierungswert um den Baum zu ordnen
    	BaumElement ();									//Std. construktor der ein Element erzeugt das in keine Richtung zeigt mit dem Indexwert 0.
    	~BaumElement ();
    	void einfuegen (BaumElement *BElement, int x);			//Eine Funktion um  ein neues Baum Element in den Baum einzufügen.
    	BaumElement (int wert);
    };
    
    BaumElement::BaumElement(int wert)
    {
    	index = wert;
    };
    
    BaumElement::BaumElement() {
    	rechts = NULL;
    	links  = NULL;
    	index = 0;
    };
    
    //WuzelKlasse sie stellt die Wurzel für den Baum dar und soll die größe speichern, falls der Baum NULL ist soll hier eine das neue Element zur Wurzel werden
    
    class Wurzel {
    public:
    	BaumElement *root;
    	int size;
    	Wurzel ();
    	~Wurzel();
    };
    
    Wurzel::Wurzel() {
    	root->links=NULL;
    	root->rechts=NULL;
    	size = 0;
    };
    
    void BaumElement::einfuegen(BaumElement *BElement, int x) {
    	if (BElement == NULL) {
    			BElement = new BaumElement(x);
    	};
    
    }
    
    int main (void) {
    	return 0;
    }
    

    Gruß Philipp



  • Eigentlich brauchst Du eine Klasse Baum, die die Baumelemente (Knoten) verwaltet.
    Die Wurzel ist ebenso ein Knoten, jedoch hat sie keine Vorgänger.

    class Node // Knoten
    {
    public:
        Node(int val) : left(NULL), right(NULL), value(val) {}
    
        // Getter und Setter etc.
    private:
        Node* left;
        Node* right;
        int value;
    };
    
    class Tree
    {
    public:
        Tree() : root(NULL) {}
        // Methoden zum einfügen,
        // ausgeben, suchen etc.
    
    private:
        Node* root;
    };
    

    Vielleicht reicht Dir das erstmal als Ansatz...



  • Hi Philipp,

    wegen des Einfügens:

    void Tree::insert(int value){
    	Node** current = &root;
    	while(*current != 0){
    		if((*current)->value>value)
    			current = &(*current)->left;
    		else
    			current = &(*current)->right; 
    	};
    	*current = new Node(value);
    }
    

    Ich hoffe das hilft dir weiter...

    Gruß,
    Spille


Anmelden zum Antworten