Python: Simplify many if-statements -
I have a function that crosses a tree and returns elements as a list < Is there a way to simplify all if statements in Code> treeToList :: traverse , because it looks kind of redundant?
#! / Usr / bin / python def enum (** enums): return type ('enum', (), enums) order = enum (PREORDER = 0, INORDER = 1, POSTORDER = 2) DRF contact form (root, order = order .adders): ret = list () Def transmissions (node, order): if order == order. Preder: ret.append (node.data) if node. Right! = None: Traverse (node. Right, order) if order == order. Inder: Rate .append (node.data) if node.down! = None: Traverse (node down, order) if order == order. Poster: ret.append (node.data) traverse (root, order) return rate class node: def __init __ (self, data = none): self.data = data self.down = none self.right = any If not __name__ == '__main__': root = node ('F') root.right = node ('B') Root.down = node ('g') root.right.right = node ('a') root .right.down = node ('d') root.down.down = node ('i') root.right .down.right = node ('c') root.right.down.down = node ('e' ) Root.down.down.right = node ('H') print treeT old (root, order .predder) print treelist (root, order.innder) print treelist (root, order.postard) Output <['A', 'B'] ['F', 'B', 'A', 'D', 'C', 'E', 'G', 'I', 'H' ['A', 'C', 'E', 'D', 'B'], 'C', 'D', 'E', 'F', 'G', 'H', 'I' Good, If you are getting rid of closing .. The pure function is obvious:
def tree tolist (node, order = order. Indoor): If the node is not any: Return [] Correct = Tristolist (node. Right, order) down = tristolist (node down, order) current = [node] If order == order. Preder: Returns current + right + down if order == Order. Indder: Return Right + Current + Down Order == Order. Powered: Return Right + Down + Current but definitely build Intermediate Lists.
Comments
Post a Comment