class Node(object):
def init(self,val=None,left=None,right=None):
# val为节点的值,left为左子树的根节点,right为右子树的根节点
self.val = val
self.left = left
self.right = right
class BT(object):
def init(self,item=[]):
self.item = item
#传入根节点,有几种情况,空,即属性都为None,val不为空,left都为空,度为1,度为2
def preTravel(self,root):
if root is None:
return
else:
self.item.append(root.val)
self.preTravel(root.left)
self.preTravel(root.right)
def midTravel(self,root):
if root is None:
return
else:
self.midTravel(root.left)
self.item.append(root.val)
self.midTravel(root.right)
def postTravel(self,root):
if root is None:
return
else:
self.postTravel(root.left)
self.postTravel(root.right)
self.item.append(root.val)
bt = Node(‘D’,left=Node(‘A’,left=Node(‘F’),right=Node(‘G’,right=Node(‘E’))),right=Node(‘C’,left=Node(‘K’),right=Node(‘M’,left=Node(‘S’))))
bt = Node()
前序遍历
tree1 = BT()
tree1.preTravel(bt)
print(tree1.item)
‘==中序遍历=’
tree1.midTravel(bt)
print(tree1.item)
‘-----后序遍历----’
tree1.postTravel(bt)
print(tree1.item)