python二叉树遍历的实现方法

代码如下:

#!/usr/bin/python# -*- coding: utf-8 -*-

class treenode(object): def __init__(self,data=0,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 is_empty(self): if self.root is 0: return true else: return false

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

n1 = treenode(data=1)n2 = treenode(2,n1,0)n3 = treenode(3)n4 = treenode(4)n5 = treenode(5,n3,n4)n6 = treenode(6,n2,n5)n7 = treenode(7,n6,0)n8 = treenode(8)root = treenode(‘root’,n7,n8)

bt = btree(root)print ‘preorder……’print bt.preorder(bt.root)print ‘inorder……’print bt.inorder(bt.root)print ‘postorder…..’print bt.postorder(bt.root)

结果:

preorder……root76215348

inorder……1263547root8

postorder…..12345678root