def postOrderTraversial(root): buffer = Stack() arraylist = [] node = root buffer.push(node) node = node.leftChild while(node != None): buffer.push(node) node = node.leftChild while(buffer.isEmpty() is False): node = buffer.peek() if(node.rightChild != None and node.rightChild.visited is False): # We have to set a visited flag that make the node = node.rightChild # nodes will not visit multiple times. while(node != None): buffer.push(node) parent = node node = node.leftChild if(parent.rightChild == None): arraylist.append(parent.key) parent.visited = True buffer.pop() else: node.visited = True # Set visited flags arraylist.append(node.key) buffer.pop() return arraylist
def preOrderTraversial(root): arraylist = [] buffer = Stack() node = root # arraylist.append(node.key) buffer.push(node) # node = node.leftChild # while(node != None): # buffer.push(node) # arraylist.append(node.key) # node = node.leftChild # while(buffer.size != 0): # node = buffer.pop() # if(node.rightChild != None): # node = node.rightChild # while(node != None): # buffer.push(node) # arraylist.append(node.key) # node = node.leftChild while buffer.size != 0: node = buffer.peek() arraylist.append(node.key) buffer.pop() if node.rightChild != None: buffer.push(node.rightChild) if node.leftChild != None: buffer.push(node.leftChild) return arraylist return arraylist