代码:
class TreeNode(object): def __init__(self,data,left=0,right=0): self.data=data self.left=left self.right=right class BTree(object): def __init__(self,root=0): self.root=root #前序遍历,根节点-》左子树-》右子树 def preOrder(self,treenode): if treenode is 0: return print(treenode.data) self.preOrder(treenode.left) #递归调用 左子树 self.preOrder(treenode.right) #递归调用 右子树 # 中序遍历,左子树-》根节点-》右子树 def inOrder(self, treenode): if treenode is 0: return self.inOrder(treenode.left) print(treenode.data) self.inOrder(treenode.right) # 前序遍历,左子树-》右子树-》根节点 def postOrder(self,treenode): if treenode is 0: return self.postOrder(treenode.left) self.postOrder(treenode.right) print(treenode.data) if __name__=='__main__': #定义树节点 n1=TreeNode(data=2) n7 = TreeNode(7) n4 = TreeNode(4, 0, n7) n2=TreeNode(2,n4,0) n5 = TreeNode(5) n8 = TreeNode(8) n6 = TreeNode(6, n8, 0) n3=TreeNode(3,n5,n6) root=TreeNode(1,n2,n3) #实例化一个树 bt=BTree(root) print('preOrder'.center(50,'-')) print(bt.preOrder(bt.root)) print('inOrder'.center(50, '-')) print(bt.inOrder(bt.root)) print('postOrder'.center(50, '-')) print(bt.postOrder(bt.root))注意: 递归调用中每一层节点的退出。