1. 先验知识
2. 如何创建一棵二叉树
class BinaryTree:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def get(self):
return self.data
def getLeft(self):
return self.left
def getRight(self):
return self.right
def setLeft(self, node):
self.left = node
def setRight(self, node):
self.right = node
# 内嵌的调用树
binaryTree = BinaryTree(0) # 根节点
binaryTree.setLeft(BinaryTree(1)) # 设置根节点的左节点
binaryTree.setRight(BinaryTree(2)) # 设置根节点的右节点
binaryTree.getLeft().setLeft(BinaryTree(3)) # 进入根节点的左节点,然后创建左节点
binaryTree.getLeft().setRight(BinaryTree(4))
binaryTree.getRight().setLeft(BinaryTree(5))
binaryTree.getRight().setRight(BinaryTree(6))
def preorderTraversal(now, result=[]):
if now == None:
return result
result.append(now.data)
preorderTraversal(now.left, result)
preorderTraversal(now.right, result)
return result
print(preorderTraversal(binaryTree))
# result
# [0, 1, 3, 4, 2, 5, 6]
def intermediateTraversal(now, result=[]):
if now == None:
return result
intermediateTraversal(now.left, result)
result.append(now.data)
intermediateTraversal(now.right, result)
return result
print(intermediateTraversal(binaryTree))
# result
# [3, 1, 4, 0, 5, 2, 6]
def postorderTraversal(now, result=[]):
if now == None:
return
postorderTraversal(now.left, result)
postorderTraversal(now.right, result)
result.append(now.data)
return result
print(postorderTraversal(binaryTree))
# result
# [3, 4, 1, 5, 6, 2, 0]