def postorder(tree, carryover=""): if tree.left != None: carryover = postorder(tree.left, carryover) if tree.right != None: carryover = postorder(tree.right, carryover) if carryover != "": carryover += " " + tree.data else: carryover = tree.data return carryover def test(expression, answer): x = parse(expression) print x, "=", x.evaluate() print postorder(x) assert(postorder(x) == expression) assert(x.evaluate() == answer)
def readfs(self, path): '''Read the file system starting at self.path. Return a node representing all files and directories starting at that path.''' if os.path.isdir(path): try: for f in os.listdir(path): subdir = FileSystemNode(path + "\\" + f) self.appendNode(subdir.readfs(path + "\\" + f)) except WindowsError: print "ignoring:", path return self def walktree(self, pat=None): '''Walk the result of reading in the file system. Print files and directories that match pat.''' if pat: if self.path.find(pat) >= 0: print self.path else: print self.path for f in self.nodes: f.walktree(pat)