class BinTreeNode: def __init__(self,data,left=None,right=None): self.data=data self.left=left#left self.right=right class BinTree: def __init__(self): self.root=None def post_order_traverse(self,root): if not root: return [] output=[] stack1=[root]#迭代遍历 stack2=[]#待访问的节点 while stack1: node=stack1.pop() stack2.append(node) if node.left: stack1.append(node.left)#node.left if node.right: stack1.append(node.right)#node.right while stack2: output.append(stack2.pop().data) return output #应用实例 if __name__=="__main__": root = BinTreeNode(1) root.left = BinTreeNode(2) root.right = BinTreeNode(3) root.left.left = BinTreeNode(4) root.left.right = BinTreeNode(5) tree = BinTree() tree.root = root print(tree.post_order_traverse(tree.root))
05-22
4411