Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Δομές Δεδομένων Σε Python.

Δομές Δεδομένων Σε Python. 7 Χρόνια 11 Μήνες πριν #3624

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Καθηγητές στην σχολή μου με λέγανε ότι στην python δεν μπορείς να κάνεις δυναμική
εκχώρηση μνήμης άρα ούτε δομές δεδομένων. Λοιπόν εγώ είπα ας το δοκιμάσω να δούμε τη
θα γίνει και πραγματικά κατάφερα να κάνω ένα δυαδικό δέντρο σε python.

Το μόνο που έκανα ήταν το ίδιο που έμαθα να κάνω και σε java.

Κώδικας:
class node:
 
    #Contructor
    def __init__(this):
        this.key   = 0
        this.left  = None
        this.right = None
 
 
    #Set key.
    def setKey(this, key):
        this.key = key
 
    #Set left.
    def setLeft(this, leftNode):
        this.left = leftNode
 
    #Set right.
    def setRight(this, rightNode):
        this.right = rightNode
 
    #Get key.
    def getKey(this):
        return this.key
 
    #Get left.
    def getLeft(this):
        return this.left
 
    #Get right.
    def getRight(this):
        return this.right
 
    #True if this node doesn connect ather nodes.
    def isLeaf(this):
        return this.left == None and this.right == None
 
 
 
class BinaryTree:
 
    #Contructor
    def __init__(this):
        this.head = None
 
    def insert(this, key):
 
 
        #Adding the very first node in the tree.
        if this.head == None:
            this.head = node()
            this.head.setKey(key)
 
 
        #Adding more nodes.
        else:
 
            currNode = this.head #Current node (Starting from the root).
            new_node = node()
            new_node.setKey(key)
 
 
 
            while True:
 
 
                #Link the node to the left.
                if key < currNode.getKey():
 
                    #Keep moving.
                    if currNode.getLeft() != None:
                        currNode = currNode.getLeft()
 
                    #Make the link.
                    else:
                        currNode.setLeft(new_node)
                        return None
 
                #Link the node to the right.
                else:
 
                    #Keep moving.
                    if currNode.getRight() != None:
                        currNode = currNode.getRight()
 
                    #Make the link.
                    else:
                        currNode.setRight(new_node)
                        return None
 
 
    def search(this, key):
 
        #Tree is empty.
        if this.head == None:
            return None
 
 
        #Search.
        else:
 
            currNode = this.head #Current node (Starting from the root).
 
            while True:
 
                #Key found.
                if key == currNode.getKey():
                    return currNode.getKey()
 
                #Key do not exists.
                elif currNode.isLeaf():
                    return None
 
                #Keep searching on the left subtree.
                elif key < currNode.getKey():
                    currNode = currNode.getLeft()
 
                #Keep searching on the right subtree.
                else:
                    currNode = currNode.getRight()
 
 
 
 
 
#Testing My Data Structure#
tree = BinaryTree()
 
tree.insert(10)
tree.insert(1)
tree.insert(5)
tree.insert(25)
 
print(tree.search(10))
print(tree.search(1))
print(tree.search(5))
print(tree.search(25))
#Testing My Data Structure#
 

Δουλεύει μια χαρά, μπορώ να προσθέτω δεδομένα και να κάνω αναζήτηση.
Όλοι με λέγανε ότι αυτό δεν γίνεται σε python και ότι πρέπει να
περιοριστώ στις δομές που δίνει η python (list, tuple, dictionary).

Απέδειξα το αντίθετο;
Τελευταία διόρθωση: 7 Χρόνια 11 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Δομές Δεδομένων Σε Python. 7 Χρόνια 11 Μήνες πριν #3626

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Δεν ξέρω τι εννοούσε ο καθηγητής σου, αλά προφανώς και μπορείς να φτιάξεις ότι δομή δεδομένων θέλεις*. Δες πχ εδώ: www.grantjenks.com/docs/sortedcontainers/

* Τo performance είναι συχνά ένα issue βέβαια· ιδίως όταν δεν διαλέγεις το σωστό αλγόριθμο.
Τελευταία διόρθωση: 7 Χρόνια 11 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": babaliaris1

Δομές Δεδομένων Σε Python. 7 Χρόνια 11 Μήνες πριν #3629

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
pmav99 έγραψε:
Δεν ξέρω τι εννοούσε ο καθηγητής σου, αλά προφανώς και μπορείς να φτιάξεις ότι δομή δεδομένων θέλεις*. Δες πχ εδώ: www.grantjenks.com/docs/sortedcontainers/

* Τo performance είναι συχνά ένα issue βέβαια· ιδίως όταν δεν διαλέγεις το σωστό αλγόριθμο.

Δεν ξέρει python ο καθηγητής μου. Μάλλον από φήμες το άκουσε και αυτός.

Τέλως πάντων, μέχρι τώρα δεν το ήξερα αυτό και ότι είχε σχέση με δομές το έκανα σε java.
Τώρα που το έμαθα όμως δεν με σταματάει τίποτα!!! Πλέον μπορώ να κάνω τα πάντα σε python!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.345 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου