postorder traversal we can implement postorder traversal using very similar technique as with preorder traversal the only difference is that within the recursive utility for postorder we wait to yield position until after we have recursively yield the positions in its subtrees an implementation is given in code fragment def postorder(self)"""generate postorder iteration of positions in the tree ""if not self is empty)start recursion for in self subtree postorder(self root))yield def subtree postorder(selfp)"""generate postorder iteration of positions in subtree rooted at ""for in self children( )for each child for other in self subtree postorder( )do postorder of ' subtree yield other yielding each to our caller yield visit after its subtrees code fragment support for performing postorder traversal of tree this code should be included in the body of the tree class breadth-first traversal in code fragment we provide an implementation of the breadth-first traversal algorithm in the context of our tree class recall that the breadth-first traversal algorithm is not recursiveit relies on queue of positions to manage the traversal process our implementation uses the linkedqueue class from section although any implementation of the queue adt would suffice inorder traversal for binary trees the preorderpostorderand breadth-first traversal algorithms are applicable to all treesand so we include their implementations within the tree abstract base class those methods are inherited by the abstract binarytree classthe concrete linkedbinarytree classand any other dependent tree classes we might develop the inorder traversal algorithmbecause it explicitly relies on the notion of left and right child of nodeonly applies to binary trees we therefore include its definition within the body of the binarytree class we use similar technique to implement an inorder traversal (code fragment as we did with preorder and postorder traversals