Καθηγητές στην σχολή μου με λέγανε ότι στην 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).
Απέδειξα το αντίθετο;