递归方法
#前序遍历
def pre_order(tree):
if tree==None:
return
print tree.data
pre_order(tree.left)
pre_order(tree.right)
#中序遍历
def mid_order(tree):
if tree==None:
return
mid_order(tree.left)
print tree.data
mid_order(tree.right)
#后序遍历
def post_order(tree):
if tree==None:
return
post_order(tree.left)
post_order(tree.right)
print tree.data
非递归方法
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#中序
def inOrder(self, root):
if root == None:
return
myStack = []
node = root
while node or myStack:
while node:
# 从根节点开始,一直找它的左子树
myStack.append(node)
node = node.lchild
# while结束表示当前节点node为空,即前一个节点没有左子树了
node = myStack.pop()
print node.val
# 开始查看它的右子树
node = node.rchild
#前序
def preOrder(self, root):
if root == None:
return
myStack = []
node = root
while node or myStack:
while node:
# 从根节点开始,一直找它的左子树
print node.val
myStack.append(node)
node = node.lchild
# while结束表示当前节点node为空,即前一个节点没有左子树了
node = myStack.pop()
# 开始查看它的右子树
node = node.rchild