用递归实现二叉树的创建和遍历:
#定义节点
class TreeNode(object):
def __init__(self, value=None):
self.data = value
self.leftChild =None
self.rightChild =None
#前序遍历
def preOrder(T):
if T.data ==None:
return
print(T.data, end=" ")
preOrder(T.leftChild)
preOrder(T.rightChild)
#中序遍历
def inOrder(T):
if T.data ==None:
return
inOrder(T.leftChild)
print(T.data, end=' ')
inOrder(T.rightChild)
#后序遍历
def postOrder(T):
if T.data ==None:
return
postOrder(T.leftChild)
postOrder(T.rightChild)
print(T.data, end=' ')
#创建二叉树,传入树和列表
def creatTree(T, L):
value = L[0]
L.pop(0)
if value =='#':
T =None
else:
T.data = value
T.leftChild = TreeNode()#将左孩子定义为一棵树
T.rightChild = TreeNode()#将右孩子定义为一棵树
print(value, end=' ')
creatTree(T.leftChild, L)
creatTree(T.rightChild, L)
return
l = ['A', 'B', 'C', '#', '#', 'D', 'E', '#', 'G', '#', '#', 'F', '#', '#', '#']
myTree = TreeNode()
creatTree(myTree, l)
print()
preOrder(myTree)
print()
inOrder(myTree)
print()
postOrder(myTree)
# print(i)