# -*- coding: utf-8 -*-
"""
Created on Thu Feb 28 20:15:01 2019
@author: CommissarMa
"""
class TreeNode():
def __init__(self,value):
self.value=value
self.leftChild=None
self.rightChild=None
class BiTree():
def __init__(self,pre_list):
"""
以前序顺序建立二叉树
"""
self.treeNode=TreeNode(None)
self.pre_list=pre_list
self.treeNode=self.__createBiTree(self.treeNode)
def __createBiTree(self,node):
value=self.pre_list[0]
if len(self.pre_list)>1:
self.pre_list=self.pre_list[1:]
if value=='#':#当遇到#时,令树的根节点为NONE,从而结束该分支的递归
node=None
else:
node=TreeNode(value)
node.leftChild=self.__createBiTree(node.leftChild)
node.rightChild=self.__createBiTree(node.rightChild)
return node
def preTraverse(self):
"""
前序遍历
"""
self.__preTraverse(self.treeNode)
def __preTraverse(self,node):
if node!=None:
print(node.value)
self.__preTraverse(node.leftChild)
self.__preTraverse(node.rightChild)
def midTraverse(self):
"""
中序遍历
"""
self.__midTraverse(self.treeNode)
def __midTraverse(self,node):
if node!=None:
self.__midTraverse(node.leftChild)
print(node.value)
self.__midTraverse(node.rightChild)
def postTraverse(self):
"""
后序遍历
"""
self.__postTraverse(self.treeNode)
def __postTraverse(self,node):
if node!=None:
self.__postTraverse(node.leftChild)
self.__postTraverse(node.rightChild)
print(node.value)
if __name__=="__main__":
biTree=BiTree(['a','b','d','#','e','h','#','i','#','c','f','#','g','#'])
print("前序遍历:")
biTree.preTraverse()
print("中序遍历:")
biTree.midTraverse()
print("后序遍历:")
biTree.postTraverse()
如有错误,请批评指正!不甚感激!