ich brauche für die postorder einen iterativen Algorithmus.
Vielleicht kann mir jemand helfen?
Code: Alles auswählen
class node(object):
""" Klasse für eine einfache Baumstruktur """
__slots__ = ["left","right","value"]
def __init__(self, value):
""" Neuen Knoten des Baumes initialisieren """
self.left = None
self.right = None
self.value = value
def insert(self, value):
""" Wert in Baumstruktur einfügen """
if value < self.value:
if self.left:
self.left.insert(value)
else:
self.left = node(value)
else:
if self.right:
self.right.insert(value)
else:
self.right = node(value)
def print_tree(self, indent=0):
""" Baumstruktur darstellen, die Einrückung stellt die Tiefe im Baum dar """
if self.left:
self.left.print_tree(indent+1)
print (" "*indent)+self.value
if self.right:
self.right.print_tree(indent+1)
def inorder(self):
""" Baum "inorder" als Liste zurückgeben """
result = [self.value]
if self.left:
result = self.left.inorder()+result
if self.right:
result = result+self.right.inorder()
return result
def preorder(self):
""" Baum "preorder" als Liste zurückgeben """
result = [self.value]
if self.left:
result = result+self.left.preorder()
if self.right:
result = result+self.right.preorder()
return result
def postorder(self):
""" Baum "postorder" als Liste zurückgeben """
if self.left:
result = self.left.postorder()
else:
result = []
if self.right:
result += self.right.postorder()
result.append(self.value)
return result
if __name__ == "__main__":
tree = node("d")
tree.insert("c")
tree.insert("f")
tree.insert("a")
tree.insert("b")
tree.insert("e")
tree.insert("g")
tree.print_tree()
print tree.inorder()
print tree.preorder()
print tree.postorder()
[/code]