def iterInOrder(currentTree): pStack = Stack() print "\nPrinting in order traversal\n" while currentTree != None or not pStack.isEmpty(): if currentTree !=None: pStack.push(currentTree) currentTree = currentTree.getLeftChild() else: currentTree = pStack.pop() print currentTree.getRootValue() currentTree = currentTree.getRightChild()
def buildParseTree(expression): expList = expression.split() empTree = BinaryTree('') parentStack = Stack() parentStack.push(empTree) currentNode = empTree for item in expList: if item == '(': currentNode.insertLeft('') parentStack.push(currentNode) currentNode = currentNode.getLeftChild() elif item not in ['+', '-', '*', '/', ')']: currentNode.setRootValue(int(item)) currentNode = parentStack.pop() elif item in ['+', '-', '*', '/']: currentNode.setRootValue(item) currentNode.insertRight('') parentStack.push(currentNode) currentNode = currentNode.getRightChild() elif item == ')': currentNode = parentStack.pop() else: raise ValueError return empTree